how to call parent class method in php

31,459

Solution 1

define printItem as static method and you can use Foo::printItem("Mental Case"); or call it in child method:

public function printItem($string)
{
    parent::printItem($string);
    echo "This is in class Bar ". $string ."<br />";
}

Solution 2

<?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();
?>

result: my name in test is John

If we change visibility of the showName method to public or protected then the result of the above will be: my name in extendTest is John

Share:
31,459
Trialcoder
Author by

Trialcoder

From PHP -&gt; Ruby on Rails -&gt; NodeJS You can easily reach my mailbox at - [email protected]

Updated on July 09, 2022

Comments

  • Trialcoder
    Trialcoder almost 2 years

    This is the working code, but i want to know without using another object(commented $foo) how could i use printItem() method of class Foo using the $bar object. New to oop programming concept so may be a weak thing to ask but really unable to locate :(

    I use scope resolution operator to use printItem() of Foo class, now my query is when we can use this functionality then what is the use of creating objects ? When to use scope resolution operators in proper coding environment.

    <?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");