Question

Est-il possible d'obtenir le nom classe dérivée de mots-clés statique? Ce que je veux vraiment faire est.

Faire un reflet de la classe dérivée
Vérifiez Wheather qu'il implémente la classe spécifiée ou non

J'ai une méthode statique de la classe de base dit son nom Base::check() Je veux Base::check() vérifiera l'existence de la mise en œuvre d'interface. la vérification méthode () connaît le nom du interface.so Je ne ai pas besoin de le dire du monde extérieur.

Mais s'il n'y a pas moyen d'obtenir NomClasseDerivee de besoin statique Keyword Je passe le nom de classe à la méthode du monde extérieur. Ce qui est pas un bon principe de codage.

Une autre alternative que je peut faire est. Je peux faire une méthode statique ::instance() qui retourne le this et je peux faire un get_class de son retour. Mais cela aussi TWEEKS mon principe d'application.

est la première méthode vraiment possible? ou je dois aller pour une alternative de ce genre? Ou Avez-vous un autre type de solutions de rechange?

Était-ce utile?

La solution

Je ne sais pas si je comprends ce que vous essayez de faire, en particulier ce que vous entendez par « obtenir le nom classe dérivée de mots-clés statique ». Consultez les fonctions suivantes pour voir si elles font ce que vous voulez faire:

Si vous référenceurs fin Liaison statique , jetez un oeil à


Je suppose que vous essayez de faire quelque chose comme ceci:

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() );
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top