summaryrefslogtreecommitdiffhomepage
path: root/php.html.markdown
diff options
context:
space:
mode:
authorBrett Taylor <brett@webfroot.co.nz>2015-10-16 12:04:17 +1300
committerBrett Taylor <brett@webfroot.co.nz>2015-10-16 12:04:17 +1300
commit6c14f507c24524de4815cac05b55bf9a56e7cd06 (patch)
tree4dd90da0162fec69c4a85d4cc5de90206d28dff5 /php.html.markdown
parent66bc42e31bf62a1592f9b763e12c0b963b3e7d3d (diff)
Adds late static binding to PHP reference
Diffstat (limited to 'php.html.markdown')
-rw-r--r--php.html.markdown49
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
}