Pregunta

¿Hay alguna manera de obtener el nombre de clase Derivado de la palabra clave estática? Lo que realmente quiero hacer es.

Haga una reflexión de la Clase
Derivado Compruebe Previsión implementa la clase especificada o no

Tengo un método estático de la base de la Clase decir su nombre Base::check() Quiero Base::check() comprobará la existencia de la implementación de la interfaz. el método de verificación () conoce el nombre de la interface.so No necesito decir que desde el mundo exterior.

Pero si no hay manera de conseguir ClaseDerivada de Keyword necesidad estática para pasar el nombre de clase con el método del mundo exterior. Lo cual no es una buena codificación principio.

Otra alternativa que se puede hacer es. Puedo hacer un método estático que devuelve el ::instance() this y puedo hacer un get_class de su regreso. Pero esto también Tweeks mi Principio de aplicación.

Así que es realmente posible el primer método? o tengo que ir por alguna alternativa de este tipo? O ¿Tiene cualquier otro tipo de alternativas?

¿Fue útil?

Solución

No estoy seguro si entiendo lo que está tratando de hacer, especialmente lo que entendemos por " obtener el nombre de clase derivada de la palabra clave estática ". Echa un vistazo a las siguientes funciones para ver si hacen lo que quiere hacer:

Si usted se refiere a Late enlace estático , echar un vistazo a


supongo que usted está tratando de hacer algo como esto:

class Base
{
    public static function check()
    {
        return in_array('IFoo', class_implements(get_called_class(), FALSE));
        // or
        $instanceClassName = get_called_class();
        return new $instanceClassName instanceof IFoo;
        // or
        $reflector = new ReflectionClass(get_called_class());
        return $reflector->implementsInterface('IFoo');           
    }
}
interface IFoo {};
class Foo extends Base implements IFoo {}

var_dump( Foo::check() );
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top