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");
In order to run a parent constructor, a call to parent::__construct() within the child constructor is required. If the child does not define a constructor then it may be inherited from the parent class just like a normal class method (if it was not declared as private). $obj = new OtherSubClass();
Calling Parent class method after method overriding Using Classname: Parent's class methods can be called by using the Parent classname. method inside the overridden method. Using Super(): Python super() function provides us the facility to refer to the parent class explicitly.
If you override a parent method in its child, child objects will always use the overridden version. But; you can use the keyword super to call the parent method, inside the body of the child method.
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 />";
}
<?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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With