<?php
namespace Ref;
trait T
{
public $traitProperty;
public function traitMethod() {}
}
interface I
{
const I = 'I';
public function i();
}
class A implements I
{
use T {
T::traitMethod as tMethod;
}
const A = 'A';
public function __construct() {}
public function a() {}
}
abstract class B extends A
{
const B = 'B';
public $public = 'public';
protected static $publicStatic;
}
$r = new \ReflectionClass('Ref\B');
//$r->getProperty('publicStatic')->setAccessible(true);
var_dump($r->hasMethod('tMethod'));
var_dump($r->hasMethod('traitMethod'));
var_dump($r->hasMethod('a'));
var_dump($r->hasMethod('i'));
Fatal error: Class Ref\A contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Ref\I::i) in /in/X6Ol5 on line 19
Process exited with code 255.
Fatal error: Class Ref\A contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Ref\I::i) in /in/X6Ol5 on line 30
Process exited with code 255.
Output for 5.3.0 - 5.3.29
Parse error: syntax error, unexpected T_STRING in /in/X6Ol5 on line 5
Process exited with code 255.