Maison >développement back-end >tutoriel php >Portée et visibilité des appels de fonction en PHP POO

Portée et visibilité des appels de fonction en PHP POO

PHPz
PHPzoriginal
2024-04-11 09:51:011012parcourir

Portée et visibilité des appels de fonction : Portée : Définit la portée des variables accessibles à la fonction (locale/globale). Visibilité : Définissez le périmètre de la fonction accessible par d'autres fonctions (publique/protégée/privée). La portée prend effet lorsqu'une fonction est appelée et détermine les variables accessibles. Cas pratique : Prenons l'exemple de la classe User pour démontrer les restrictions de visibilité des propriétés et des méthodes.

PHP OOP 中函数调用的作用域和可见性

Portée et visibilité des appels de fonction en PHP OOP

Portée

La portée d'une fonction définit la portée des variables auxquelles la fonction peut accéder. Il existe deux types de scopes en PHP :

  • Portée locale : Les variables définies à l'intérieur d'une fonction ne sont visibles qu'à l'intérieur de cette fonction.
  • Portée globale : Les variables définies en dehors d'une fonction sont accessibles tout au long du script.

Visibilité

La visibilité d'une fonction définit le périmètre dans lequel une fonction est accessible par d'autres fonctions. Il existe trois niveaux de visibilité en PHP :

  • public : Les fonctions sont accessibles de n'importe où.
  • protected : La fonction n'est accessible que dans les sous-classes de cette classe.
  • private : La fonction n'est accessible qu'au sein de cette classe.

Portée des appels de fonction

Lorsqu'une fonction est appelée, le rôle de la portée est de déterminer à quelles variables sont accessibles. Une variable ne peut accéder qu'aux variables contenues dans sa portée.

L'exemple suivant montre comment la portée affecte l'accès aux variables :

<?php
$global_variable = "全球变量";

function myFunction() {
    $local_variable = "局部变量";
    echo "局部变量:$local_variable<br>";
    echo "全局变量:$global_variable<br>";
}

myFunction();
?>

Sortie :

局部变量:局部变量
全局变量:全球变量

Exemple réel

Considérons une classe qui gère les informations utilisateur :

<?php
class User {
    public $name;
    protected $email;
    private $password;

    public function __construct($name, $email, $password) {
        $this->name = $name;
        $this->email = $email;
        $this->password = $password;
    }

    public function getName() {
        return $this->name;
    }

    protected function getEmail() {
        return $this->email;
    }

    private function getPassword() {
        return $this->password;
    }
}

$user = new User("约翰·史密斯", "john.smith@example.com", "12345");

echo $user->getName(); // 约翰·史密斯
echo $user->getEmail(); // 错误:无法访问受保护属性
echo $user->getPassword(); // 错误:无法访问私有属性
?>

Dans cet exemple :

  • $name est une propriété publique et est accessible de n'importe où. $name 是一个公共属性,可以在任何地方访问。
  • $email 是一个受保护属性,只能在类とその子类中访问。
  • $password 是一个私有属性,只能在类中访问。
  • getName() 是一个公共方法,可以在任何地方调用。
  • getEmail() 是一个受保护方法,只能在类とその子类中调用。
  • getPassword()
  • $email est une propriété protégée et n'est accessible que dans les sous-classes de la classe とその.
🎜$password est une propriété privée et n'est accessible qu'au sein de la classe. 🎜🎜getName() est une méthode publique qui peut être appelée n'importe où. 🎜🎜getEmail() est une méthode protégée et ne peut être appelée que dans les sous-classes de la classe とその. 🎜🎜getPassword() est une méthode privée et ne peut être appelée que dans la classe. 🎜🎜

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!

Déclaration:
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