(資料圖)
public訪問(wèn)控制是最常用的一種,它表示對(duì)象屬性和方法可以在任何地方訪問(wèn),包括類(lèi)的外部。例如:
phpCopy codeclass Person { public $name; public function greet() { echo "Hello, my name is " . $this->name; }}$person = new Person();$person->name = "John";$person->greet(); // 輸出 "Hello, my name is John"
在上面的示例中,$name屬性和greet()方法都被聲明為public,因此可以從類(lèi)的外部訪問(wèn)。在創(chuàng)建新的Person對(duì)象后,可以使用$person->name屬性設(shè)置$name屬性的值,并調(diào)用$person->greet()方法輸出相應(yīng)的消息。
private訪問(wèn)控制表示對(duì)象屬性和方法只能在類(lèi)內(nèi)部訪問(wèn)。這意味著,在類(lèi)的外部無(wú)法直接訪問(wèn)或修改私有屬性或方法。例如:
class Person { private $name; public function setName($name) { $this->name = $name; } public function greet() { echo "Hello, my name is " . $this->name; }}$person = new Person();$person->setName("John"); // 正確$person->greet(); // 報(bào)錯(cuò),因?yàn)?name是私有屬性,無(wú)法從外部訪問(wèn)
在上面的示例中,$name屬性被聲明為private,因此無(wú)法從類(lèi)的外部直接訪問(wèn)。相反,可以通過(guò)一個(gè)名為setName()的public方法來(lái)設(shè)置$name屬性的值,并通過(guò)$person->greet()方法輸出相應(yīng)的消息。
protected訪問(wèn)控制表示對(duì)象屬性和方法只能在類(lèi)內(nèi)部和其子類(lèi)中訪問(wèn)。這意味著,類(lèi)的外部無(wú)法直接訪問(wèn)或修改受保護(hù)的屬性或方法。例如:
class Person { protected $name; public function setName($name) { $this->name = $name; }}class Employee extends Person { public function greet() { echo "Hello, my name is " . $this->name; }}$employee = new Employee();$employee->setName("John"); // 正確$employee->greet(); // 輸出 "Hello, my name is John"
在上面的示例中,$name屬性被聲明為protected,因此無(wú)法從類(lèi)的外部直接訪問(wèn)。相反,可以通過(guò)一個(gè)名為setName()的public方法來(lái)設(shè)置$name屬性的值,并通過(guò)Employee類(lèi)中的greet()方法輸出相應(yīng)的消息。由于Employee類(lèi)是Person類(lèi)的子類(lèi),因此可以在子類(lèi)中訪問(wèn)protected屬性。
責(zé)任編輯: