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 /php.html.markdown | |
parent | 66bc42e31bf62a1592f9b763e12c0b963b3e7d3d (diff) |
Adds late static binding to PHP reference
Diffstat (limited to 'php.html.markdown')
-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 } |