<?php class Army { public static $strength = 20; public static function getStrength() { //late static binding... if the child that called the method has a the property, use that one //else, go up the class hierarchy and find the static property return static::$strength; } } echo 'Army strength: ' . Army::getStrength() . '<br/>'; class Batallion extends Army { public static $strength = 10; } echo 'Batallion strength: ' . Batallion::getStrength() . "<br/>";
<?php class Army { public static $strength = 20; public static function getStrength() { return static::$strength; // will check child class first then parent class //This is called late static binding //return self::$strength; will renter 20 for battalion } } class Battalion extends Army { public static $strength = 10; } echo 'Army strength: ' . Army::getStrength() . "<br/>"; echo 'Battalion strength: ' . Battalion::getStrength() . "<br/>"; //Batallion str is 10 but it will render 20 because it will render the parent static as the default // class Unit extends Battalion { public static $strength = 5; } echo 'Unit strength: ' . Unit::getStrength() . "<br/>";