Utilisation de mots-clés publics, privés, protégés, abstraits et autres en PHP

小云云
Libérer: 2023-03-19 06:34:02
original
1595 Les gens l'ont consulté

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 = &#39;Public&#39;;
 protected $protected = &#39;Protected&#39;;
 private $private = &#39;Private&#39;;
 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();//直接报错
?>
Copier après la connexion

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
?>
Copier après la connexion

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
?>
Copier après la connexion

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();
Copier après la connexion

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>
Copier après la connexion

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
Copier après la connexion

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";
 }
}
Copier après la connexion

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.
 }
}
?>
Copier après la connexion

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
?>
Copier après la connexion

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!

Étiquettes associées:
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