- Output for 5.4.2 - 5.4.45, 5.5.24 - 5.5.29, 5.6.7 - 5.6.13
- Parse error: syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ',' or ';' in /in/Qtpi5 on line 57
Process exited with code 255.
<?php
class Ancestor {
public $publicVar = "ancestor's public var\n";
static $staticVar = "ancestor's static var\n";
function publicMethod(){
echo "ancestor's publicMethod ";
// is $this is set up
if(isset($this)){
echo "is in object context\n";
}else{
echo "is in static context\n";
}
}
static function staticMethod(){
echo "ancestor's staticMethod ";
// is $this is set up
if(isset($this)){
echo "in object context\n";
}else{
echo "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 "descendant's publicMethod ";
// is $this is set up
if(isset($this)){
echo "in object context\n";
}else{
echo "in static context\n";
}
}
static function staticMethod(){
echo "descendant's staticMethod ";
// is $this is set up
if(isset($this)){
echo "in object context\n";
}else{
echo "in static context\n";
}
}
function callToPropertiesFromPublicContext(){
echo $this->publicVar; // descendant's public var
//echo $this->staticVar; // "" + notice: Undefined property: Descendant::$staticVar
//echo $this::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
echo $this::$staticVar; // descendant's static var
//echo Descendant::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
echo Descendant::$staticVar; // descendant's static var
echo __CLASS__::$staticVar;
}
static function callToPropertiesFromStaticContext(){
//echo Descendant::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
echo Descendant::$staticVar; // descendant's static var
}
function callMethodsFromPublicContext()
{
$this->publicMethod(); // descendant's publicMethod in object context
$this->staticMethod(); // descendant's staticMethod in static context
$this::publicMethod(); // descendant's publicMethod in object context
$this::staticMethod(); // descendant's staticMethod in static context
Descendant::publicMethod(); // descendant's publicMethod in object context
Descendant::staticMethod(); // descendant's staticMethod in static context
}
static function callMethodsFromStaticContext()
{
Descendant::publicMethod(); // descendant's publicMethod in static context (deprecated)
Descendant::staticMethod(); // descendant's staticMethod in static context
}
}
$ancestor = new Ancestor();
$descendant = new Descendant();
echo "\n1. From Outside Of An Instance/Class:\n";
echo "\n----- 1.1 access to properties -----\n";
echo $descendant->publicVar; // descendant's public var
//echo $descendant->staticVar; // "" + notice: Undefined property: Descendant::$staticVar
//echo $descendant::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
echo $descendant::$staticVar; // descendant's static var
//echo Descendant::$publicVar; // fatal error: Access to undeclared static property
echo Descendant::$staticVar; // descendant's static var
echo "\n----- 1.2 access to methods -----\n";
$descendant->publicMethod(); // descendant's publicMethod in object context
$descendant->staticMethod(); // descendant's staticMethod in static context
$descendant::publicMethod(); // descendant's publicMethod in static context (deprecated)
$descendant::staticMethod(); // descendant's staticMethod in static context
Descendant::publicMethod(); // descendant's publicMethod in static context (deprecated)
Descendant::staticMethod(); // descendant's staticMethod in static context
echo "\n2. From Inside Of An Instance/Class:\n";
echo "\n----- 2.1 access to properties from public context -----\n";
$descendant->callToPropertiesFromPublicContext();
//echo $this->publicVar; // descendant's public var
//echo $this->staticVar; // "" + notice: Undefined property: Descendant::$staticVar
//echo $this::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
//echo $this::$staticVar; // descendant's static var
//
//echo Descendant::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
//echo Descendant::$staticVar; // descendant's static var
echo "\n----- 2.2 access to properties from static context -----\n";
$descendant->callToPropertiesFromStaticContext();
//echo Descendant::$publicVar; // fatal error: Access to undeclared static property: Descendant::$publicVar
//echo Descendant::$staticVar; // descendant's static var
echo "\n----- 2.3 access to methods from public context -----\n";
$descendant->callMethodsFromPublicContext();
//$this->publicMethod(); // descendant's publicMethod in object context
//$this->staticMethod(); // descendant's staticMethod in static context
//$this::publicMethod(); // descendant's publicMethod in object context
//$this::staticMethod(); // descendant's staticMethod in static context
//
//Descendant::publicMethod(); // descendant's publicMethod in object context
//Descendant::staticMethod(); // descendant's staticMethod in static context
echo "\n----- 2.4 access to methods from static context -----\n";
$descendant->callMethodsFromStaticContext();
//Descendant::publicMethod(); // descendant's publicMethod in static context (deprecated)
//Descendant::staticMethod(); // descendant's staticMethod in static context
echo "\n2. From Inside with 'forwarding call' :\n";
// self parent and static