Cet article partage principalement avec vous un article qui traite de l'utilisation des mots-clés publics, privés, protégés, abstraits et autres en PHP. Il a une bonne valeur de référence et j'espère qu'il sera utile à tout le monde. Suivons l'éditeur et jetons un œil. J'espère que cela pourra aider tout le monde.
Mots-clés couramment utilisés en PHP
PHP contient de nombreux mots-clés qui restreignent les fonctions et les classes. Les mots-clés couramment utilisés sont abstrait, final, interface, public, protégé, privé, statique, etc. analysera et triera l’utilisation de chacun.
Mots clés public, private, protected pour les variables et les méthodes
public a les plus grandes autorisations. Il peut être utilisé par les sous-classes et peut également prendre en charge les appels après
moyens protégés. protégé, et l'autorisation d'accès n'est accessible que dans les sous-classes et cette classe
private signifie privé, et n'est accessible que dans la classe actuelle
<?php // /** * Define MyClass */ class MyClass { public $public = 'Public'; protected $protected = 'Protected'; private $private = 'Private'; public function printHello() { echo $this->public; echo $this->protected; echo $this->private; } protected function pro_test(){ var_dump(1); } } $obj = new MyClass(); echo $obj->public; // 这行能被正常执行 //echo $obj->protected; // 这行会产生一个致命错误 //echo $obj->private; // 这行也会产生一个致命错误 $obj->printHello(); // 输出 Public、Protected 和 Private $obj->pro_test();//直接报错 ?>
Le mot-clé static pour les variables et les méthodes
La fonction de static est de permettre à la valeur ou à la méthode d'être appelée dans la classe sans instanciation. En même temps, la variable modifiée par static a la même valeur. La fonction de stockage, par exemple, le résultat de. fonctionner sans utiliser static est le suivant :
<?php function test(){ $var=1; echo $var."</br>"; $var++; } test();// 1 test();// 1 test();// 1 ?>
Si nous ajoutons de la static à la variable, elle deviendra comme ceci
<?php function test(){ static $var=1; echo $var."</br>"; $var++; } test();// 1 test();// 2 test();// 3 ?>
Vous ne pourrez peut-être pas la comprendre ici. À voir les avantages de faire cela en PHP, supposons d'abord que le lecteur est également familier avec JS. Il n'y a pas de mot-clé statique dans JS, donc si nous voulons implémenter un programme qui peut enregistrer les résultats de chaque opération du programme comme opération suivante. Nous devons écrire un programme basé sur cela.
var glo=0; function test(){ glo++; document.writeln(glo); } test(); test(); test();
Cela entraînera une fuite dans les variables globales. Si davantage de variables sont générées, cela entraînera des fuites de mémoire (les fuites de mémoire font référence à des variables qui occupent trop d'espace mémoire et ne sont pas libérées. )
<script> var glo=0; function test(){ glo++; document.writeln(glo); } test();// 1 test();// 2 test();// 3 </script>
Donc, par rapport aux langages qui ne définissent pas de statique, il a l'avantage de conserver les variables, de ne pas perdre de mémoire et de ne pas facilement provoquer une mauvaise utilisation des variables globales (car la portée n'est pas globale)
$age=0; $age++; function test1() { static $age = 100; $age++; echo $age."</br>"; } function test2() { static $age = 1000; $age++; echo $age."</br>"; } test1(); // 101 test2(); // 1001
Le mot-clé final pour la classe et la méthode
final ne peut être utilisé que pour modifier la classe et la fonction. Après avoir utilisé final, il ne peut pas être hérité. Par exemple, le code suivant signalera directement une erreur.
class BaseClass { public $public = 'Public'; function test() { echo "BaseClass::test() called\n"; } final public function moreTesting() { echo "BaseClass::moreTesting() called\n"; } } class ChildClass extends BaseClass { public function moreTesting() { echo "ChildClass::moreTesting() called\n"; } }
Interface de mots-clés spéciaux, abstrait
La signification d'interface est de standardiser le style de programmation Imaginez que si une interface est implémentée, alors nous devons utiliser cette classe d'interface pour implémenter les méthodes. à l’intérieur, il joue un rôle dans la dénomination unifiée.
La classe peut hériter de plusieurs interfaces. L'héritage unique entre les interfaces est obtenu via des extensions. La relation entre la classe et l'interface est établie via des implémentations
Exemple de code :
<?php interface testA{ function funcA(); } interface testB{ function funcB(); } interface testC extends testA { function funcC(); } class run implements testC ,testB { public function funcA() { // TODO: Implement funcA() method. } public function funcB() { // TODO: Implement funcB() method. } public function funcC() { // TODO: Implement funcC() method. } } ?>
Le La fonction abstraite est en fait la même que celle de l'interface, mais toutes les méthodes de l'interface doivent être implémentées, mais dans une classe abstraite modifiée, il peut y avoir une ou plusieurs modifications abstraites. Méthode, nous pouvons donc la comprendre de cette façon, l'interface est une cas particulier d'abstrait (lorsque toutes les méthodes sont des méthodes abstraites, elles doivent être implémentées). Abstract a les caractéristiques suivantes :
1. Tant qu'au moins une méthode de la classe utilise le mot-clé abstract, alors la classe est abstraite et le mot-clé correspondant doit être ajouté
2. Les méthodes abstraites n'ont que la partie déclaration de la méthode et aucun corps de méthode.
Mais à mon avis, il existe plusieurs scénarios comme celui-ci dans des applications pratiques du abstrait
1 Standardiser les règles de dénomination des parties publiques lors d'une programmation multi-personnes (sans aucune explication, le principe est Idem. comme interface)
2. Pour empêcher le parent d'être instancié directement, utilisez le code de style
comme suit :
<?php abstract class shopping { public function buy() { echo "buy"; } public function loan() { echo "loan"; } } class leslieBuy extends shopping { } //$test1=new shopping;//直接语法错误 $leslieSie = new leslieBuy; $leslieSie->loan();//打印出loan ?>
Est-ce que tout le monde connaît son utilisation ? Obtenez-le rapidement.
Recommandations associées :
Exemples d'utilisation et analyse des différences entre public, privé, protégé
php orienté objet public privé protected Trois exemples de code de modificateur
Une brève discussion sur la portée des modificateurs d'accès private, protected et public en PHP
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!