<?php
abstract class HiddenFactory
{
protected function __construct()
{
}
protected static function create()
{
return new static();
}
}
class B extends HiddenFactory
{}
class C extends B {}
class A extends HiddenFactory
{
protected $recordClass = 'B';
final public static function createB()
{
return $recordClass::create();
}
}
class D extends A {
protected $recordClass = 'C';
}
echo get_class(A::createB());
echo get_class(D::createB());
Warning: Undefined variable $recordClass in /in/bMhJ2 on line 27
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/bMhJ2:27
Stack trace:
#0 /in/bMhJ2(37): A::createB()
#1 {main}
thrown in /in/bMhJ2 on line 27
Process exited with code 255.
Notice: Undefined variable: recordClass in /in/bMhJ2 on line 27
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/bMhJ2:27
Stack trace:
#0 /in/bMhJ2(37): A::createB()
#1 {main}
thrown in /in/bMhJ2 on line 27
Process exited with code 255.
Output for 7.3.32 - 7.3.33, 7.4.26
Fatal error: Uncaught Error: Class name must be a valid object or a string in /in/bMhJ2:27
Stack trace:
#0 /in/bMhJ2(37): A::createB()
#1 {main}
thrown in /in/bMhJ2 on line 27
Process exited with code 255.
Notice: Undefined variable: recordClass in /in/bMhJ2 on line 27
Fatal error: Class name must be a valid object or a string in /in/bMhJ2 on line 27
Process exited with code 255.
Output for 5.1.0 - 5.1.6, 5.2.0 - 5.2.17
Parse error: syntax error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/bMhJ2 on line 12
Process exited with code 255.
Output for 5.0.0 - 5.0.5
Parse error: parse error, unexpected T_STATIC, expecting T_STRING or T_VARIABLE or '$' in /in/bMhJ2 on line 12
Process exited with code 255.
Output for 4.4.2 - 4.4.9
Parse error: syntax error, unexpected T_CLASS in /in/bMhJ2 on line 3
Process exited with code 255.