1--TEST-- 2ZE2 Late Static Binding in an instance function 3--FILE-- 4<?php 5 6class TestClass { 7 protected static $staticVar = 'TestClassStatic'; 8 const CLASS_CONST = 'TestClassConst'; 9 10 protected static function staticFunction() { 11 return 'TestClassFunction'; 12 } 13 14 public function testStaticVar() { 15 return static::$staticVar; 16 } 17 18 public function testClassConst() { 19 return static::CLASS_CONST; 20 } 21 22 public function testStaticFunction() { 23 return static::staticFunction(); 24 } 25} 26 27class ChildClass1 extends TestClass { 28 protected static $staticVar = 'ChildClassStatic'; 29 const CLASS_CONST = 'ChildClassConst'; 30 31 protected static function staticFunction() { 32 return 'ChildClassFunction'; 33 } 34} 35 36class ChildClass2 extends TestClass {} 37 38$testClass = new TestClass(); 39$childClass1 = new ChildClass1(); 40$childClass2 = new ChildClass2(); 41 42 43echo $testClass->testStaticVar() . "\n"; 44echo $testClass->testClassConst() . "\n"; 45echo $testClass->testStaticFunction() . "\n"; 46 47echo $childClass1->testStaticVar() . "\n"; 48echo $childClass1->testClassConst() . "\n"; 49echo $childClass1->testStaticFunction() . "\n"; 50 51echo $childClass2->testStaticVar() . "\n"; 52echo $childClass2->testClassConst() . "\n"; 53echo $childClass2->testStaticFunction() . "\n"; 54?> 55==DONE== 56--EXPECTF-- 57TestClassStatic 58TestClassConst 59TestClassFunction 60ChildClassStatic 61ChildClassConst 62ChildClassFunction 63TestClassStatic 64TestClassConst 65TestClassFunction 66==DONE== 67