Ce qui est un trait ? Traits de scénarios de PHP application

Source : Internet
Auteur : utilisateur
Cet article vous apporte le contenu de ce qui est le trait ? PHP caractère application scene, il y a une certaine valeur de référence, il est nécessaire pour les amis peuvent voir un peu, j’espère pouvoir vous aider.

Pourquoi utiliser des traits ?

Le langage PHP utilise un modèle d’héritage typique. Dans ce modèle, nous tout d’abord écrire une classe générique racine, mettre en œuvre les fonctionnalités de base et ensuite protéger la classe racine, création d’une classe plus spécifique qui hérite de l’implémentation de la classe parent direct. Cela s’appelle la hiérarchie d’héritage, et de nombreux langages de programmation utilisent ce modèle.

La plupart du temps, ce modèle d’héritage typique fonctionne bien. Mais que dois-je faire si je veux deux indépendants des classes PHP se comporter dans un comportement similaire ? par exemple, les RetailStore et la voiture deux classes PHP fonctionnent très différemment, et il n’y a aucune commune classe parente dans la hiérarchie d’héritage. Cependant, tous les deux classes devraient être en mesure de convertir en latitude et de longitude à l’aide de techniques de géocodage et de les afficher ensuite sur une carte.
Des traits sont nés pour résoudre de tels problèmes. Des traits peuvent être réalisés de façon modulaire en plusieurs classes sans rapport avec des personnes. Et caractères peuvent aussi faciliter la réutilisation du code.
Pour résoudre ce problème, ma première réaction a été de créer une classe parente Geocodable (qui n’est pas bon), ce qui permet de Retalstore et voiture d’hériter de la classe. Cette solution de contournement n’est pas bonne car nous forcer deux classes indépendantes d’hériter du même ancêtre, et il est clair que cet ancêtre n’appartient-elle pas à la hiérarchie d’héritage respectifs.
Ma réaction finale a été de créer un trait de Geocodable (qui se fait de mieux), de définir le puits pour atteindre le trou de cheveux national de machine de géocodage de ces deux classes de la méthode originale et ensuite mis dans les deux classes Retailstore et voiture de la personne mixte ce trait. Ce faisant remuera pas vers le haut de la hiérarchie d’héritage de la nature ancienne.

Par exemple

Nous voulons que les deux classes de RetailStore et de voiture de fournir de capacités de géocodage et de reconnaître cet héritage et interfaces ne sont pas optimales. L’option que nous avons choisi était de créer un trait de Geocodable, de retour de latitude et de longitude et puis dessinez-le sur la carte. Les traits de geocedable sont définis comme suit :

?phptrait Geocodable {/** @var string */protected $address;/** @var \Geocoder\Geocoder */protected $geocoder;/** @var \GeocoderlResult\Geocoded */protected $geocoderResult;public function setGeocoder(\Geocoder\GeocoderIntertace $geocoder){$this->geocoder = $geocoder;}public function setAddress($address){$this->address = $address; }public function getLatitude(){if (isset($this->geocoderResult) === false){$this->geocodeAddress();}return $this->geocoderResult->getLatitude();}public function getlongitude(){if (isset($this->geocoderResult) === false){$this->geocodeAddress();}return $this->geocoderResult->getLongitude();}protected function geocodeAddress(){$this->geocoderResult = $this->geocoder->geocode($this->address);return true;}}

Traits de Geocodable suffit de définir les propriétés et les méthodes requises pour implémenter le géocodage et rien d’autre n’est nécessaire, un trait de Geocodable qui définit trois propriétés de la classe : une adresse de la représentation (string), un objet de géocodage et un objet de résultat qui est obtenu après le géocodage est traitée. Nous avons également défini quatre méthodes publiques et une méthode protégée. La méthode setGeocoder est utilisée pour injecter des objets Geocoder ; La méthode setAddress est utilisée pour définir l’adresse ; Les méthodes Getlatitude () et getLongitude () retournent latitude et longitude, respectivement ; La méthode geocodeAddress transmet la chaîne d’adresse à l’instance de géocodage pour obtenir les résultats traités par le géocodage.
Comment se sert-on des traits ?

Traits PHP sont utilisés d’une manière simple, à l’aide de l’utilisation de MyTrait ; déclarations peuvent être ajoutées à la définition d’organisme de la classe PHP. Ce qui suit est un exemple. Évidemment, lorsqu’il est effectivement utilisé, la MyTrait remplacer avec le nom de caractères PHP correspondant.

≪ ? Phpclass MyClass {-MyTrait ; Il s’agit de l’implémentation de la classe}

Recommandation : Les traits et les espaces de noms sont utilisés pour guider les personnes avec utilisation des mots clés, mais la position du guide est différente. Espaces de noms, classes, interfaces, fonctions et constantes de guident les gens dans la définition d’une classe, tandis que les traits de guident les gens dans la définition d’une classe. La différence est faible, mais il est important. Et le principe d’utilisation utilisation est que vous avez introduit le fichier PHP.

Nous devons juste faire tellement de choses. Maintenant, chaque instance de Retailstore pouvez utiliser les propriétés et les méthodes fournies par des traits de Geocodable, à savoir :

$store = new RetailStore();$store->setddress('420 9th Avenue, New York, NY 10001 USA');

L’interpréteur PHP copie les caractères dans le corps de la définition de la classe au moment de la compilation.

Article associé

Nous contacter

Le contenu de cette page provient d'Internet et ne reflète pas l'opinion d'Alibaba Cloud ; les produits et services mentionnés sur cette page n'ont aucune relation avec Alibaba Cloud. Si le contenu de la page vous semble problématique, veuillez nous écrire un courriel, nous traiterons le problème dans les 5 jours suivant la réception de votre message.

Si vous constatez des cas de plagiat de la part de la communauté, veuillez envoyer un courriel à : info-contact@alibabacloud.com et fournir des preuves pertinentes. Un membre de notre équipe vous contactera dans les 5 jours ouvrables.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.