首頁  >  文章  >  後端開發  >  PHP OOP 中函數呼叫的作用域與可見性

PHP OOP 中函數呼叫的作用域與可見性

PHPz
PHPz原創
2024-04-11 09:51:01942瀏覽

函數呼叫的作用域和可見性:作用域:定義函數可存取變數的範圍(本地/全域)。可見性:定義函數可被其他函數存取的範圍(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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn