<?php
class Ancestor {
public $publicVar = "ancestor's public var\n";
static $staticVar = "ancestor's static var\n";
function publicMethod(){
echo "this is ancestor's public method\n";
// is $this is set up
if(isset($this)){
echo "publicMethod is in object context\n";
}else{
echo "publicMethod is in static context\n";
}
}
static function staticMethod(){
echo "this is ancestor's static method\n";
// is $this is set up
if(isset($this)){
echo "staticMethod is in object context\n";
}else{
echo "staticMethod is in static context\n";
}
}
}
class Descendant extends Ancestor {
public $publicVar = "descendant's public var\n";
static $staticVar = "descendant's static var\n";
function publicMethod(){
echo "this is descendant's public method\n";
// is $this is set up
if(isset($this)){
echo "publicMethod is in object context\n";
}else{
echo "publicMethod is in static context\n";
}
}
static function staticMethod(){
echo "this is descendant's static method\n";
// is $this is set up
if(isset($this)){
echo "staticMethod is in object context\n";
}else{
echo "staticMethod is in static context\n";
}
}
}
$ancestor = new Ancestor();
$descendant = new Descendant();
// From Outside Of An Instance/Class:
echo $ancestor->publicVar;
echo $ancestor::$staticVar;
echo $descendant->publicVar;
echo $descendant::$staticVar;
//Ancestor::publicMethod();