Maison  >  Article  >  développement back-end  >  PHP utilise la réflexion pour obtenir des classes et certaines applications de base

PHP utilise la réflexion pour obtenir des classes et certaines applications de base

不言
不言original
2018-07-06 17:15:532072parcourir

Cet article présente principalement PHP pour obtenir des cours par réflexion et quelques applications de base. Il a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Ces derniers jours. , Regardez le code de base du framework laravel. J'ai trouvé une utilisation intensive du mécanisme de réflexion. Regardons brièvement quelques applications de réflexion

class A
{
    private $_foo = 'this is a';
    public function index()
    {
        return $this->_foo;
    }
    private function _come($param)
    {
        return 'this is come'.$param;
    }

}
$refClass = new ReflectionClass('A');//获得反射

Utilisons cette réflexion pour obtenir les propriétés privées de A

$privateParams = $refClass->getDefaultProperties();
print_r($privateParams);//得到结果 Array ( [_foo] => this is a )
echo $privateParams['_foo'];//得到 this is a

afin que nous puissions facilement l'obtenir de A attribut privé. Alors, que faut-il faire pour exécuter des méthodes privées ? Ensuite, regardons d'abord l'exécution des méthodes publiques. L'exécution des méthodes publiques est relativement simple.

/****************获得类的实例*******************/
$class = $refClass->newInstance();
echo $class->index();

De cette façon, vous pouvez appeler des méthodes publiques. Examinons l'exécution de la méthode privée

/****************获取A的方法*******************/
$refHasClass = $refClass->getMethods();
print_r($refHasClass);
/***
 * Array ( [0] => ReflectionMethod Object ( [name] => index [class] => A )
 * [1] => ReflectionMethod Object ( [name] => _come [class] => A ) )
 */
$come = $refClass->getMethod('_come');
$come->setAccessible(true);
echo $come->invoke($class,'this is param');
// this is athis is comethis is param

Tout d'abord, vous pouvez obtenir la méthode getMethod() via come, puis définir l'accessibilité de la méthode come. Enfin, exécutez la méthode via invoke

Il existe de nombreuses autres méthodes disponibles pour la réflexion, je ne les aborderai donc pas une par une ici. Ceux qui sont intéressés peuvent consulter la documentation officielle

Ce qui précède est l'intégralité du contenu de cet article. J'espère qu'il sera utile à l'étude de chacun. Pour plus de contenu connexe, veuillez faire attention au PHP chinois. site web!

Recommandations associées :

Notes sur la configuration des paramètres php-fpm pour php7+

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn