<?php
namespace Ref;
trait T
{
public $traitProperty;
public function traitMethod() {}
}
interface I
{
const I = 'I';
public function i();
}
abstract 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;
}
class C extends B
{
public function __construct(\ReflectionClass $a)
{
}
public function i() {}
}
$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->isSubclassOf('Ref\I'));
$r->newInstance();
bool(true)
bool(true)
bool(true)
bool(true)
Fatal error: Uncaught Error: Cannot instantiate abstract class Ref\B in /in/uRfE3:57
Stack trace:
#0 /in/uRfE3(57): ReflectionClass->newInstance()
#1 {main}
thrown in /in/uRfE3 on line 57
Process exited with code 255.