diff options
| author | Brett Taylor <brett@webfroot.co.nz> | 2015-10-16 12:04:17 +1300 | 
|---|---|---|
| committer | Brett Taylor <brett@webfroot.co.nz> | 2015-10-16 12:04:17 +1300 | 
| commit | 6c14f507c24524de4815cac05b55bf9a56e7cd06 (patch) | |
| tree | 4dd90da0162fec69c4a85d4cc5de90206d28dff5 | |
| parent | 66bc42e31bf62a1592f9b763e12c0b963b3e7d3d (diff) | |
Adds late static binding to PHP reference
| -rw-r--r-- | php.html.markdown | 49 | 
1 files changed, 43 insertions, 6 deletions
diff --git a/php.html.markdown b/php.html.markdown index 39ec5aef..e64f7bfe 100644 --- a/php.html.markdown +++ b/php.html.markdown @@ -693,6 +693,43 @@ use My\Namespace as SomeOtherNamespace;  $cls = new SomeOtherNamespace\MyClass(); + +/********************** +* Late Static Binding +* +* / + +class ParentClass { +    public static function who() { +        echo "I'm a " . __CLASS__ . "\n"; +    } +    public static function test() { +        // self references the class the method is defined within +        self::who(); +        // static references the class the method was invoked on +        static::who(); +    } +} + +ParentClass::test(); +/* +I'm a ParentClass +I'm a ParentClass +*/ + +class ChildClass extends ParentClass { +    public static function who() { +        echo "But I'm " . __CLASS__ . "\n"; +    } +} + +ChildClass::test(); +/* +I'm a ParentClass +But I'm ChildClass +*/ + +  /**********************  *  Error Handling  *   @@ -708,9 +745,9 @@ try {  // When using try catch blocks in a namespaced enviroment use the following -try {  +try {      // Do something -} catch (\Exception $e) {  +} catch (\Exception $e) {      // Handle exception  } @@ -719,13 +756,13 @@ try {  class MyException extends Exception {}  try { -     -    $condition = true;  -     + +    $condition = true; +      if ($condition) {          throw new MyException('Something just happend');      } -     +  } catch (MyException $e) {      // Handle my exception  }  | 
