<?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;
echo Ancestor::$publicVar;
echo Ancestor::$staticVar;
echo Descendant::$publicVar;
echo Descendant::$staticVar;
//Ancestor::publicMethod();
ancestor's public var
ancestor's static var
descendant's public var
descendant's static var
Fatal error: Uncaught Error: Access to undeclared static property Ancestor::$publicVar in /in/M29Es:60
Stack trace:
#0 {main}
thrown in /in/M29Es on line 60
Process exited with code 255.
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
ancestor's public var
ancestor's static var
descendant's public var
descendant's static var
Fatal error: Uncaught Error: Access to undeclared static property Ancestor::$publicVar in /in/M29Es:60
Stack trace:
#0 {main}
thrown in /in/M29Es on line 60
Process exited with code 255.
ancestor's public var
ancestor's static var
descendant's public var
descendant's static var
Fatal error: Uncaught Error: Access to undeclared static property: Ancestor::$publicVar in /in/M29Es:60
Stack trace:
#0 {main}
thrown in /in/M29Es on line 60
Process exited with code 255.
ancestor's public var
ancestor's static var
descendant's public var
descendant's static var
Fatal error: Access to undeclared static property: Ancestor::$publicVar in /in/M29Es on line 60
Process exited with code 255.