summaryrefslogtreecommitdiff
path: root/Zend/tests/lsb_002.phpt
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/tests/lsb_002.phpt')
-rw-r--r--Zend/tests/lsb_002.phpt66
1 files changed, 66 insertions, 0 deletions
diff --git a/Zend/tests/lsb_002.phpt b/Zend/tests/lsb_002.phpt
new file mode 100644
index 0000000..4fca6dd
--- /dev/null
+++ b/Zend/tests/lsb_002.phpt
@@ -0,0 +1,66 @@
+--TEST--
+ZE2 Late Static Binding in an instance function
+--FILE--
+<?php
+
+class TestClass {
+ protected static $staticVar = 'TestClassStatic';
+ const CLASS_CONST = 'TestClassConst';
+
+ protected static function staticFunction() {
+ return 'TestClassFunction';
+ }
+
+ public function testStaticVar() {
+ return static::$staticVar;
+ }
+
+ public function testClassConst() {
+ return static::CLASS_CONST;
+ }
+
+ public function testStaticFunction() {
+ return static::staticFunction();
+ }
+}
+
+class ChildClass1 extends TestClass {
+ protected static $staticVar = 'ChildClassStatic';
+ const CLASS_CONST = 'ChildClassConst';
+
+ protected static function staticFunction() {
+ return 'ChildClassFunction';
+ }
+}
+
+class ChildClass2 extends TestClass {}
+
+$testClass = new TestClass();
+$childClass1 = new ChildClass1();
+$childClass2 = new ChildClass2();
+
+
+echo $testClass->testStaticVar() . "\n";
+echo $testClass->testClassConst() . "\n";
+echo $testClass->testStaticFunction() . "\n";
+
+echo $childClass1->testStaticVar() . "\n";
+echo $childClass1->testClassConst() . "\n";
+echo $childClass1->testStaticFunction() . "\n";
+
+echo $childClass2->testStaticVar() . "\n";
+echo $childClass2->testClassConst() . "\n";
+echo $childClass2->testStaticFunction() . "\n";
+?>
+==DONE==
+--EXPECTF--
+TestClassStatic
+TestClassConst
+TestClassFunction
+ChildClassStatic
+ChildClassConst
+ChildClassFunction
+TestClassStatic
+TestClassConst
+TestClassFunction
+==DONE==