Introduction 39; Héritage de classe PHP orienté objet
Ou étendons la requête WP _ et nous commencerons notre classe par \
Lorsqu’une classe est étendue, nous la considérons comme une classe mère et une classe étendue comme une classe enfant. L’utilisation correcte de l’héritage de classe exige une compréhension approfondie de la visibilité des attributs et des méthodes, dont j’ai discuté en profondeur ici. La Sous – classe commence par la classe mère. Par exemple, si nous ne l’écrivons que pour la classe Product _ query, elle sera la même que Wp query: Product Query étend WP Query {}, ce qui ne donne évidemment aucun résultat. D’autre part, si nous travaillons sur un projet qui nécessite beaucoup de requêtes pour les messages dans le type de message produit, nous pouvons utiliser cette classe pour simplifier les choses:
Classe Product _ Query Extended WP Query {
Fonctions publiques construction ($QUERY) {
$QUERY [‘post _ type’] = \
Parent:: _ construction ($QUERY);
}
} cette classe suit les mêmes règles que Wp _ query, mais nous n’avons pas à vous dire tout le temps que nous n’avons besoin que des messages produits. De plus, il est clair que les objets créés avec lui sont utilisés pour les messages produits. Nous pouvons ajouter plus de personnalisation à la construction. Notez que dans ma classe d’extension, j’ai créé une fonction appelée _ Construct () et que Wp query a également déclaré un constructeur. N’importe quelle méthode, magique ou non, peut être écrasée dans la Sous – classe, mais vous pouvez toujours accéder à la méthode parent en utilisant le mot – clé \
Notez que l’écrasement d’une méthode et la modification de sa signature, de ses paramètres ou de son type déclencheront une alerte standard stricte en PHP5, et une alerte en php7. Vous ne devriez pas le faire parce que cela rend le code plus difficile à lire. Si vous utilisez une instruction de type de retour en php7, ne changez pas le type de retour de la méthode lorsque vous l’écrasez en S.
Une erreur fatale ou une erreur fatale se produira. PHP5 ne supporte pas les déclarations de type de retour. Un bon exemple d’héritage de classe est la classe de réponse WP _ http qui se trouve dans le répertoire WP includes \/ restapi, mais qui peut être utilisée avec n’importe quel type de réponse http. Il est étendu par la classe WP _ rest Response, qui est spécialement utilisée pour répondre aux demandes de l’API rest.
Une classe abstraite peut encore être étendue à moins qu’elle ne soit déclarée finale. Php fournit des conventions abstraites pour les classes qui ne peuvent pas être instantanées directement, et ne fournit des classes de base que pour les autres classes qui les étendent. Une autre règle spéciale pour les classes abstraites est qu’elles peuvent avoir des méthodes abstraites qui doivent être écrasées par la classe qui les étend, sinon des erreurs peuvent se produire. C’est un système très utile parce qu’il vous permet de définir comment les sous – classes fonctionnent. Les méthodes abstraites ne peuvent pas avoir de corps, et les méthodes qui les écrasent ne peuvent pas changer leur signature. Une erreur fatale se produit si vous essayez de modifier un paramètre ou un type de paramètre en PHP5 ou php7.
Ceci est légèrement différent de la réécriture d’une méthode non abstraite, bien que dans la pratique, c’est la même chose que vous ne devriez pas changer la signature d’une méthode, même si techniquement vous pouvez faire des changements dans PHP5 qui désactive les normes strictes. Les interfaces fournissent des rôles similaires, mais les méthodes des interfaces doivent être publiques, tandis que les méthodes abstraites peuvent être publiques, protégées ou privées. Les méthodes qui écrasent les méthodes abstraites doivent également utiliser la même signature. Le Contrôleur WP _ rest de l’api WordPress rest est un bon exemple de classe abstraite. Il s’étend de tous les paramètres pour fournir un système standard sur la façon dont les classes de paramètres devraient fonctionner.
Notez qu’il n’utilise pas de méthodes abstraites parce que les versions précédentes de PHP ne supportent pas les méthodes abstraites. – moi.
K
$obj – > Connect ();
Mise à jour _ option (‘public Social Network, $obj – > get public ());
Mise à jour _ option (‘Secret réseau social, $obj – > get secret ());
} moins de code, mieux de code cette brève introduction à l’héritage de classe en PHP devrait vous aider à écrire des classes plus petites avec plus de code réutilisable. Le Code réutilisable est non seulement plus efficace, plus facile à lire et à entretenir, mais il nécessite également moins de tests unitaires. L’héritage de classe a de nombreuses utilisations que vous devriez étudier attentivement. Au lieu de réutiliser WP _ Query à plusieurs reprises, vous pouvez écrire une classe de base appelée WP Query et l’étendre plusieurs fois pour répondre à vos besoins. Par exemple, si vous créez un plug – in qui nécessite des paramètres d’API de repos personnalisés, vous pouvez étendre la classe WP _ rest Controller, ce qui vous permettra d’économiser beaucoup de travail. Si vous travaillez sur un site qui interagit avec plusieurs services de courrier électronique transactionnel, écrivez une classe de base pour gérer toutes les fonctions publiques nécessaires à l’interaction API de ces services de courrier électronique transactionnel et étendez chaque service une fois. Je peux continuer avec ces exemples, mais vous devriez examiner le Code et le plan de projet existants et réfléchir à la façon dont l’héritage de classe peut vous aider à sauter la méthode copier \/ coller et à améliorer votre code.