| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | <?php/* Copyright (c) 2009 hamcrest.org */class FactoryClass{    /**     * @var string     */    private $file;    /**     * @var ReflectionClass     */    private $reflector;    /**     * @var array     */    private $methods;    public function __construct($file, ReflectionClass $class)    {        $this->file = $file;        $this->reflector = $class;        $this->extractFactoryMethods();    }    public function extractFactoryMethods()    {        $this->methods = array();        foreach ($this->getPublicStaticMethods() as $method) {            if ($method->isFactory()) {                $this->methods[] = $method;            }        }    }    public function getPublicStaticMethods()    {        $methods = array();        foreach ($this->reflector->getMethods(ReflectionMethod::IS_STATIC) as $method) {            if ($method->isPublic() && $method->getDeclaringClass() == $this->reflector) {                $methods[] = new FactoryMethod($this, $method);            }        }        return $methods;    }    public function getFile()    {        return $this->file;    }    public function getName()    {        return $this->reflector->name;    }    public function isFactory()    {        return !empty($this->methods);    }    public function getMethods()    {        return $this->methods;    }}
 |