'Multi level inheritance in PHP
I'm trying to access and modify data that is in a parent class which is a child of another class. I've a parent class
class GrandParent {
protected $data = 1;
public function __construct() {}
public function getData() {
return $this->data;
}
}
Below is my first level child
class Child extends GrandParent {
protected $c1Data;
public function __construct() {
$this->c1Data = parent::getData();
$this->c1Data = 2;
}
public function getData() {
return $this->c1Data;
}
}
If I try to instantiate the Child class and do getData(), I get 2 which is normal. I've another class that inherits Child.
class GrandChild extends Child {
protected $c2Data;
public function __construct() {
$this->c2Data = parent::getData();
}
public function getData() {
return $this->c2Data;
}
}
The problem is that if I try to instantiate GrandChild I and get the data I'm getting null. Is it possible to make my GrandChild class inherit $c1Data = 2 and work with it. I want also to be able to use the Child and GrandParent classes on their own and not be abstract.
Solution 1:[1]
This is how you add two integers and display the result with Multi
Level Inheritance in PHP.
<?php
/*
Inheritance:
multiple classes
Parent class/child class
senior and junior
child class extends some data or functions of parent class
child class has its own functions
child class can access all public and protected data and functions
*/
//Multi Level Inheritance Every class extends other class
//Parent Class
class A{
//data
var $a;
function setA()
{
$this->a=10;
}
}
//child class
class B extends A{
var $b;
function setB()
{
$this->b=20;
}
}
class Addition extends B{
function add()
{
$this->setA();
$this->setB();
return $this->a+$this->b;
}
}
class Print1 extends Addition{
function print()
{
$this->add();
print("a=".$this->a);
print("<br/>b=".$this->b);
print("<br/>Addtion:".$this->add());
}
}
//make object
$obj1=new Print1();
$obj1->print();
/*
Make Subtraction, multiplication and division classes and print the values as
a=10
b=20
Addtion=30
Subtraction=-10
Multiplication=200
Division:0.5
*/
?>
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
