как вызвать метод родительского класса в PHP

это рабочий код, но я хочу знать, не используя другой объект (commented $foo) Как я могу использовать printItem() метод class Foo С помощью

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, то результатом вышеизложенного будет: мое имя в extendTest-Джон


сделайте 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");