[英]Is PHP class variable definition necessary?
我是PHP面向對象編程的新手,但我知道以過程方式編寫代碼。
如果這是我的PHP類
<?php
class person {
var $name;
function __construct($persons_name) {
$this->name = $persons_name;
}
function get_name() {
return $this->name;
}
}
?>
如果我在PHP頁面中訪問它
$jane = new person("Jane Doe");
echo "Her name is : ".$jane->get_name();
問題:是否真的需要添加var $name;
在我的PHP類中,因為我可以正確獲得她的名字的輸出是:Jane Doe即使沒有var $name;
變量 var $name;
在我的PHP類中?
從技術上講,不是,PHP非常寬容這樣的事情。 但是,如果僅出於文檔目的,這是一個好習慣。
可能更重要的是,顯式聲明屬性使您可以設置其可見性 。 在您的示例中,$ name是一個公共屬性(public是PHP中的默認可見性)。 如果您不需要將其公開(由於getter / setter可以更好地控制可以分配的值,通常不這樣做是比較安全的),則應聲明是受保護的還是私有的。
從語義上講,您應該這樣做,因為$name
確實是類的一個屬性。 您的構造函數已經為屬性分配了$persons_name
,但是如果您保留了var $name;
出來,您的腳本的其余部分將不會真正知道您的類中是否存在這樣的屬性。 此外,如果構造函數沒有立即分配它, person::get_name()
會嘗試檢索未聲明的$name
屬性並觸發通知。
正如布倫頓·阿爾克(Brenton Alker)所說 ,明確聲明類屬性使您可以設置其可見性。 例如,由於您將get_name()
作為$name
,因此可以將$name
設置為private
這樣在創建person
對象后,就不能從類外部更改此人的名字。
同樣,嘗試分配給未聲明的類屬性會使它們在被分配之前被聲明為public
屬性。
這是非常有用的。 想象一下,您在一個數組中編寫了一堆名稱不同的人員對象,然后您將在網站的另一個位置調用所有對象的名稱。 當您存儲每個特定人員的姓名時,這才有可能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.