首页 资料 正文

PHP OOP 中函数调用的作用域和可见性-php教程-

2024-04-26 23:19:17 63

函数调用的作用域和可见性:作用域:定义函数可访问变量的范围(本地/全局)。可见性:定义函数可被其他函数访问的范围(public/protected/private)。作用域在函数调用时生效,确定可访问的变量。实战案例:以 user 类为例,演示属性和方法的可见性限制。

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

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

作用域

函数的作用域定义了该函数可访问变量的范围内。在 PHP 中有两种作用域:

  • 本地作用域:在函数内部定义的变量只在该函数内部可见。
  • 全局作用域:在函数外部定义的变量在整个脚本中都可以访问。

可见性

函数的可见性定义了函数可以被其他函数访问的范围。在 PHP 中有三个可见性级别:

  • public:函数可以在任何地方访问。
  • protected:函数只能在该类とその子类中访问。
  • private:函数只能在该类中访问。

函数调用的作用域

当函数被调用时,作用域的作用是确定可以访问哪些变量。变量只能访问在其作用域内的变量。

以下示例展示了作用域如何影响变量的访问:

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

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

myFunction();
?>
登录后复制

输出:

局部变量:局部变量
全局变量:全球变量
登录后复制

实战案例

考虑一个用于处理用户信息的类:

<?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(); // 错误:无法访问私有属性
?>
登录后复制

在这个示例中:

  • $name 是一个公共属性,可以在任何地方访问。
  • $email 是一个受保护属性,只能在类とその子类中访问。
  • $password 是一个私有属性,只能在类中访问。
  • getName() 是一个公共方法,可以在任何地方调用。
  • getEmail() 是一个受保护方法,只能在类とその子类中调用。
  • getPassword() 是一个私有方法,只能在类中调用。

以上就是PHP OOP 中函数调用的作用域和可见性的详细内容,更多请关注php中文网其它相关文章!

-六神源码网 -六神源码网