Cette fois, je vais vous apporter une explication détaillée des étapes d'utilisation des Traits pour la réutilisation du code. Quelles sont les précautions pour l'utilisation des Traits pour la réutilisation du code. Voici des cas pratiques, jetons un coup d'œil.
À partir de la version 5.4.0 de PHP, PHP propose un nouveau concept de réutilisation de code, qui est Trait. Trait signifie littéralement « caractéristiques » et « caractéristiques ». On peut comprendre que l'utilisation du mot-clé Trait peut ajouter de nouvelles caractéristiques aux classes en PHP.
Tous ceux qui connaissent Orienté objet savent qu'il existe deux méthodes de réutilisation de code couramment utilisées dans le développement logiciel : l'héritage et le polymorphisme. En PHP, un seul héritage peut être obtenu. Les traits évitent cela. Ce qui suit est une explication comparative à travers un exemple simple.
1. Héritage VS Polymorphisme VS Trait
Il y a maintenant deux classes : Publish.php et Answer.php. Pour y ajouter la fonction LOG, enregistrez les actions à l'intérieur de la classe. Il existe plusieurs options :
Héritage
Polymorphisme
Trait
1.1. La structure du code
héritée est la suivante :
// Log.php<?phpClass Log{ publicfunctionstartLog() { // echo ... } publicfunctionendLog() { // echo ... }} // Publish.php<?phpClass PublishextendsLog{} // Answer.php<?phpClass AnswerextendsLog{}
1.2 Code d'implémentation
polymorphe : < 🎜. >
// Log.php<?phpInterface Log{ publicfunctionstartLog(); publicfunctionendLog();} // Publish.php<?phpClass PublishimplementsLog{ publicfunctionstartLog() { // TODO: Implement startLog() method. } publicfunctionendLog() { // TODO: Implement endLog() method. }} // Answer.php<?phpClass AnswerimplementsLog{ publicfunctionstartLog() { // TODO: Implement startLog() method. } publicfunctionendLog() { // TODO: Implement endLog() method. }}
// Log.php<?phptrait Log{ publicfunctionstartLog() { // echo .. } publicfunctionendLog() { // echo .. }} // Publish.php<?phpclassPublish { useLog;}$publish=newPublish();$publish->startLog();$publish->endLog(); // Answer.php<?phpclassAnswer { useLog;}$answer=newAnswer();$answer->startLog();$answer->endLog();
2. Portée du Trait
Après avoir compris les avantages du Trait, nous devons également comprendre les règles de sa mise en œuvre. C'est plus facile à prouver. Le code d'implémentation est le suivant :<?phpclassPublish { useLog; publicfunctiondoPublish() { $this->publicF(); $this->protectF(); $this->privateF(); }} $publish=newPublish();$publish->doPublish(); publicfunctionprotectedfunctionprivatefunction
Vous pouvez trouver que la portée de Trait est visible à l'intérieur de la référence de la classe Trait. On peut comprendre que le mot-clé use copie le code d'implémentation du Trait dans la classe qui référence le Trait.
|
3 Priorité des attributs dans Trait
En ce qui concerne la priorité, il doit y avoir un objet de référence pour la comparaison. L'objet de référence fait ici référence à la classe Trait et à sa classe parent. Prouvez la priorité des attributs dans l'application Trait via le code suivant :
<?phptrait Log{ publicfunctionpublicF() { echoMETHOD.' public function'. PHP_EOL; } protectedfunctionprotectF() { echoMETHOD.' protected function'. PHP_EOL; }}classQuestion{ publicfunctionpublicF() { echoMETHOD.' public function'. PHP_EOL; } protectedfunctionprotectF() { echoMETHOD.' protected function'. PHP_EOL; }}classPublishextendsQuestion{ useLog; publicfunctionpublicF() { echoMETHOD.' public function'. PHP_EOL; } publicfunctiondoPublish() { $this->publicF(); $this->protectF(); }} $publish=newPublish();$publish->doPublish(); 上述代码的输出结果如下: Publish::publicFpublicfunctionLog::protectFprotectedfunction
Les membres de la classe actuelle remplacent la méthode du trait
Tout comme le sens littéral, le mot-clé placeof remplace ce dernier par le premier, comme clé Le mot donne un alias à la méthode remplacée.
Comment supprimer les valeurs nulles ou les éléments vides dans un tableau en PHP
implémente PHP une fonction de journalisation
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!