[英]What is the purpose of declaring variables in a class
如果一個變量在沒有它的情況下工作,那么在一個類的頂部聲明一個變量的目的是什么?
class Testclass
{
public $testvar = "default value";
public function setTestvar($testvar) {
$this->testvar = $testvar;
}
public function getTestvar() {
return $this->testvar;
}
}
相比:
class Testclass
{
public function setTestvar($testvar) {
$this->testvar = $testvar;
}
public function getTestvar() {
return $this->testvar;
}
}
兩種變體都是正確的,但在初始化之前獲取testvar
時缺少第二種變體。
如果你調用$test->getTestvar();
在使用$test->setTestval('bla bla');
設置它之前$test->setTestval('bla bla');
,你會得到一個警告,如:
注意 :未定義的屬性:Testclass :: $ testvar
第二個變體也缺少屬性可見性部分(即私有,受保護)。 更多關於可見性 。
方法上面的類屬性聲明是一種很好的做法,它取自嚴格的oop語言,如java。
在PHP中,包含聲明沒有功能目的。 您似乎已經閱讀了文檔並且100%正確。
但是有一個案例。 如果我們 在設置變量之前 調用 getter
,我們將得到一個undefined variable
異常。
現在讓我們考慮一下。
假設我是一名程序員,專門研究c ++和java。 我是這些語言的專家(所以我很快就拿起PHP),而你的公司只是聘請我來幫助你處理你正在使用的Web應用程序。 我看一下這個對象,並且不知道發生了什么。
真正歸結為PHP是我所知道的最奇怪的語言之一。 你偶然發現了PHP所做的許多奇怪的事情之一。 這不會是你的最后一次。 對象是模板; 它們是程序員可以出於各種原因使用的代碼片段。 在制作對象時我們可以做的信息和格式越多,其他程序員就越有效地使用它。 它與我們格式化代碼的原因完全相同。
TL; DR
沒有理由,除了文檔,易於閱讀和避免未聲明的變量。
提出了另一個重要問題
在全局上下文中聲明變量允許您設置屬性可見性。 公共或私人。 因為你有getter和setter我假設你的屬性是私有的。 所以你需要聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.