Как вызвать метод родительского класса в php
Это рабочий код, но я хочу знать, не используя другой объект (прокомментировал $foo
) как я могу использовать printItem()
метод class Foo
с использованием $bar
объект. Новая для программирования концепция, так что, может быть, это слабая вещь, которую нужно спросить, но она не может найти:(
Я использую оператор разрешения области видимости, чтобы использовать printItem()
из Foo class
, теперь мой вопрос, когда мы можем использовать эту функциональность, тогда какая польза от создания объектов? Когда использовать операторы разрешения контекста в правильной среде кодирования.
<?php
class Foo
{
public function printItem($string)
{
echo "This is in class Foo ". $string ."<br />";
}
public function printPHP()
{
echo "PHP is great "."<br />";
}
}
class Bar extends Foo
{
public function printItem($string)
{
echo "This is in class Bar ". $string ."<br />";
}
}
//$foo = new Foo;
$bar = new Bar;
$bar->printPHP();
$bar->printItem("Bar class object");
//Foo::printItem("Mental Case");
3 ответа
Определять printItem
как статический метод, и вы можете использовать Foo::printItem("Mental Case");
или вызовите его в дочернем методе:
public function printItem($string)
{
parent::printItem($string);
echo "This is in class Bar ". $string ."<br />";
}
<?php
class test {
public function __construct() {}
public function name() {
// $this->xname('John');
$this->showName('John');
}
private function showName($name) {
echo 'my name in test is '.$name;
}
}
class extendTest extends test {
public function __construct() {
parent::__construct();
}
private function showName($name) {
echo 'my name in extendTest is '.$name;
}
}
$test = new extendTest();
$test->name();
?>
результат: меня зовут Джон
Если мы изменим видимость метода showName на public или protected, то результатом вышеописанного будет: мое имя в exteTest - John
Сделайте printItem статическим методом, добавив ключевое слово static. printItem($string) будет доступен для использования без создания объекта этого класса.
<?php
class Foo
{
static public function printItem($string)
{
echo "This is in class Foo ". $string ."<br />";
}
public function printPHP()
{
echo "PHP is great "."<br />";
}
}
class Bar extends Foo
{
public function printItem($string)
{
echo "This is in class Bar ". $string ."<br />";
}
}
//$foo = new Foo;
$bar = new Bar;
$bar->printPHP();
$bar->printItem("Bar class object");
//Foo::printItem("Mental Case");