Comment ajouter des attributs à la classe php

PHPz
Libérer: 2023-04-05 15:18:01
original
891 Les gens l'ont consulté

Présentation :

En tant que développeur, nous savons tous que PHP est un langage typé, donc chaque classe a une certaine structure d'attributs. Dans certains cas, nous devons ajouter des propriétés au moment de l'exécution pour une meilleure gestion des données dans l'application. Heureusement, les classes PHP nous permettent d'ajouter des propriétés de manière dynamique au moment de l'exécution tout en gardant le code clair et facile à comprendre.

Dans cet article, nous montrerons comment ajouter des propriétés au moment de l'exécution à l'aide de la syntaxe et de l'API de réflexion intégrées en PHP. Nous présenterons également des études de cas afin que vous puissiez voir comment ces technologies sont utilisées dans des applications réelles.

Syntaxe pour l'ajout d'attributs :

PHP 7.4 fournit des indications de type pour les attributs. Dans une définition de classe, vous déclarez les types de propriétés et les niveaux d'accès correspondants (public, protégé, privé). Par exemple, nous pouvons déclarer une propriété protégée dans la définition de la classe :

class Exemple {
protected int $myProtectedInt;
}

Lorsque nous essayons d'accéder à la propriété, nous pouvons utiliser des méthodes d'accès normales comme celle-ci :

$obj = new Exemple();
$obj->myProtectedInt = 5;

À ce stade, nous avons réussi à attribuer la valeur 5 à la propriété $myProtectedInt.

API de réflexion pour l'ajout de propriétés :

PHP fournit un ensemble spécial d'API intégrées appelées API de réflexion. L'API de réflexion nous permet d'obtenir des métadonnées à partir du code que nous écrivons au moment de l'exécution. Cela signifie que nous pouvons obtenir des statistiques sur les classes et leurs membres (propriétés, méthodes, constantes, etc.).

Nous pouvons obtenir le reflet d'une classe en utilisant l'exemple de code suivant (notez que nous avons référencé la classe Exemple) :

$reflection = new ReflectionClass('Example');

Maintenant, nous pouvons récupérer la liste des propriétés de la classe classe. Par exemple, nous pouvons obtenir une liste de propriétés en utilisant la méthode $reflection->getProperties() comme ceci :

$properties = $reflection->getProperties();

Ensuite, il nous suffit de parcourir le tableau et ajoutez la propriété selon vos besoins. Par exemple, le code suivant ajoute une nouvelle propriété publique :

$reflection = new ReflectionClass('Example');
$properties = $reflection->getProperties();
$name = 'myNewPublicProperty';
$reflection- >newInstance()->$name = 'myNewValue';

À ce stade, nous avons ajouté avec succès une nouvelle propriété nommée myNewPublicProperty et l'avons initialisée à la chaîne "myNewValue".

Étude de cas :

Supposons que nous écrivions une application de vente simple et que nous devions suivre les quantités en stock de différents produits. Étant donné que l'inventaire des produits peut changer, nous devons ajouter des attributs au moment de l'exécution pour enregistrer la quantité d'inventaire.

Nous pouvons définir une classe de produit simple en utilisant le code suivant :

class Product {
private int $productId;
private string $name;
private float $price;

public function __construct(int $productId, string $name , float $price){

$this->productId = $productId;
$this->name = $name;
$this->price = $price;
Copier après la connexion

}

public function getProductId(){

return $this->productId;
Copier après la connexion

}

public function getName(){

return $this->name;
Copier après la connexion

}

public function getPrice(){

return $this->price;
Copier après la connexion

}
}

Nous devons maintenant ajouter les attributs d'inventaire. Vous pouvez définir une sous-classe ProductWithStock et ajouter l'attribut stock comme suit :

class ProductWithStock extends Product {
protected int $stock;

public function __construct(int $productId, string $name, float $price, int $stock ){

parent::__construct($productId, $name, $price);
$this->stock = $stock;
Copier après la connexion

}

public function getStock(){

return $this->stock;
Copier après la connexion

}

public function setStock(int $stock){

$this->stock = $stock;
Copier après la connexion

}
}

Comme vous pouvez le voir, cette sous-classe hérite de la classe Product, et a ajouté un attribut d'inventaire dessus. Le niveau d'accès de cette propriété est défini sur protégé car dans l'application, le stock de produits doit être en lecture seule et doit être accessible par la méthode getProductStock().

Dans l'exemple d'implémentation de code, nous créons un nouvel objet ProductWithStock, ajoutons une propriété appelée $stock et définissons sa valeur dans le constructeur. Dans une application réelle, il peut être modifié ou mis à jour selon les besoins.

De cette façon, nous avons réussi à ajouter une propriété et à étendre une classe pour mieux gérer les données.

Conclusion :

Dans cet article, nous avons appris comment ajouter des attributs en PHP. Nous utilisons la syntaxe intégrée pour un ajout simple de propriétés et introduisons des moyens d'ajouter dynamiquement des propriétés à l'aide de l'API de réflexion. De plus, nous utilisons des études de cas pour montrer comment ces techniques sont utilisées dans des applications réelles et vous montrer comment étendre une classe pour la rendre plus flexible et plus facile à gérer. Ces techniques sont très utiles lors du développement car elles permettent de gérer et de modifier les données au sein de l'application, permettant ainsi une meilleure évolutivité et maintenabilité.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!