recherche
  • Se connecter
  • S'inscrire
Réinitialisation du mot de passe réussie

Suivez les projets qui vous intéressent et découvrez les dernières actualités les concernant.

Objets et structures de données

Collection 148
Lire 30847
temps de mise à jour 2016-09-11

Objets et structures de données

1. Utilisez les getters et les setters Utilisez l'encapsulation d'objets

2. Utilisez des variables membres privées ou protégées pour les objets

1. Utilisez des getters et des setters

En PHP, vous pouvez utiliser public, protected, private sur les méthodes pour contrôler les modifications apportées aux propriétés des objets.

  1. Lorsque vous souhaitez effectuer des opérations autres que l'obtention des propriétés d'un objet, vous n'avez pas besoin de rechercher et de modifier chaque méthode d'accès aux propriétés dans le code.

  2. Lorsqu'il existe une méthode d'attribut set correspondante, il est facile d'ajouter une vérification des paramètres

  3. Représentation à l'intérieur du colis

  4. Ajout facile de la journalisation et du contrôle des erreurs lors de l'utilisation de setget et get

  5. Lors de l'héritage de la classe actuelle, vous pouvez remplacer la fonction de méthode par défaut

  6. get*set*Facile à utiliser le chargement différé lorsque les propriétés d'un objet sont récupérées à partir d'un serveur distant

De plus, cette approche est également conforme au principe d'ouverture et de fermeture du développement de la POO.

Mauvais :

 class BankAccount
{
    public $balance = 1000;
}
 
$bankAccount = new BankAccount();
 
// Buy shoes...
$bankAccount->balance -= 100;

Bien :

 class BankAccount
{
    private $balance;
 
    public function __construct(int $balance = 1000)
    {
      $this->balance = $balance;
    }
 
    public function withdraw(int $amount): void
    {
        if ($amount > $this->balance) {
            throw new \Exception('Amount greater than available balance.');
        }
 
        $this->balance -= $amount;
    }
 
    public function deposit(int $amount): void
    {
        $this->balance += $amount;
    }
 
    public function getBalance(): int
    {
        return $this->balance;
    }
}
 
$bankAccount = new BankAccount();
 
// Buy shoes...
$bankAccount->withdraw($shoesPrice);
 
// Get balance
$balance = $bankAccount->getBalance();

2. Utilisez des variables membres privées ou protégées pour les objets

  • La modification des méthodes et propriétés publiques est très dangereuse car le code externe peut facilement s'appuyer sur elles et vous n'avez aucun contrôle sur elles. Les modifications apportées à cela affectent tous les utilisateurs de cette classe. Les méthodes et propriétés publiques sont les plus dangereuses pour les modifications, car certains codes extérieurs peuvent facilement s'appuyer sur elles et vous ne pouvez pas contrôler quel code en dépend. Les modifications en classe sont dangereuses pour tous les utilisateurs de la classe.

  • Les modifications apportées à protected sont presque aussi dangereuses que les modifications apportées à public, car elles sont disponibles pour les sous-classes. La seule différence entre elles est que les emplacements appelables sont différents et que leurs modifications affectent tous les emplacements qui intègrent cette classe. Les modificateurs protected sont aussi dangereux que public, car ils sont disponibles dans la portée de n'importe quelle classe enfant. Cela signifie effectivement que la différence entre public et protected réside uniquement dans le mécanisme d'accès, mais la garantie d'encapsulation reste la même. Les modifications dans la classe sont dangereuses pour toutes les classes descendantes. .

  • Les modifications apportées à private garantissent que cette partie du code n'affectera que la classe actuelle. Le modificateur privé garantit qu'il est dangereux de modifier le code uniquement dans les limites d'une seule classe (vous êtes en sécurité pour les modifications et vous n'aurez pas d'effet Jenga).

Alors, utilisez public/protected,其他时候都用private uniquement lorsque vous devez contrôler si le code de la classe est accessible.

Vous pouvez lire cet article de Fabien Potencier.

Mauvais :

 class Employee
{
    public $name;
 
    public function __construct(string $name)
    {
        $this->name = $name;
    }
}
 
$employee = new Employee('John Doe');
echo 'Employee name: '.$employee->name; // Employee name: John Doe

Bien :

 class Employee
{
    private $name;
 
    public function __construct(string $name)
    {
        $this->name = $name;
    }
 
    public function getName(): string
    {
        return $this->name;
    }
}
 
$employee = new Employee('John Doe');
echo 'Employee name: '.$employee->getName(); // Employee name: John Doe
Outils d'IA chauds
Undress AI Tool
Undress AI Tool

Images de déshabillage gratuites

AI Clothes Remover
AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undresser.AI Undress
Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

Stock Market GPT
Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outil populaire
Bloc-notes++7.3.1
Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6
Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac
SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)