我發現用@property 申明屬性後,類中也可以使用,如下面的代碼!請問adminName1和adminName2有什麼區別?是不是一般申明屬性都用@property?
/**
* @property string adminName1
*/
class test {
private $adminName2;
public function getName($pram1,$pram2) {
$this->adminName1 = $pram1;
$this->adminName2 = $pram2;
}
}
?>
回複討論(解決方案)
你沒看到他是在注釋裡面的嗎?
@property string adminName1
是說屬性 adminName1 是一個字串
這隻是為了協助理解程式的解說文字
我看到他在注釋裡,知道在其他地方調用的時候可以用於提示資訊!我不明白為什麼在類裡面可以使用它?
你根據它的規則走就是啦。這是出自哪裡的代碼?
我在yii架構裡面看到的。但是我自己寫了一個測試,也可以,如下:
/**
* @property string adminName1
*/
class test {
private $adminName2;
public function setName($pram1,$pram2) {
$this->adminName1 = $pram1;
$this->adminName2 = $pram2;
}
public function getName() {
return $result = $this->adminName1." ".$this->adminName2;
}
}
$test = new test();
$test->setName("admin1", "admin2");
echo $test->getName();
?>
//輸出結果:admin1 admin2
所以我想php是不是就有這個規則?
已經說了 是為了協助理解程式的解說文字
像你這樣一改
/**
* @property string adminName1
*/
就沒有說明的意義了,相反還會產生誤解
明明他說有一個 adminName1 屬性,我怎麼沒看到呀?只看到 adminName2,是不是還要定義一個 adminName1 呀
你在說什嗎?
已經說了 是為了協助理解程式的解說文字
像你這樣一改
/**
* @property string adminName1
*/
就沒有說明的意義了,相反還會產生誤解
明明他說有一個 adminName1 屬性,我怎麼沒看到呀?只看到 adminName2,是不是還要定義一個 adminName1 呀
這位師兄,非常感謝你的回答,但是我覺得你沒有明白的我意思!
樓主,我也在找這個問題的答案,回複的幾位兄台確實沒明白樓主的意思。
沒google到答案,我個人的理解,這是給IDE看的,
@property關鍵字作為轉義,IDE遇到這類注釋,自動為其加入屬性列表(即使它不存在,你可以按這個格式添加一個不存在的屬性試試)。
目的是為一些魔術屬性變得顯式,讓調用的開發人員更清楚,當然,需要IDE的支援
首先這個識別屬性以後,屬性還是未被定義,對這些屬性的調用最後都是調用__set和__get方法。常見的使用方法是:
public function __get($name){$getter='get'.$name;if(method_exists($this,$getter))return $this->$getter();}
最後對這些未定義屬性的方法都轉換為get/set函數的訪問。
樓主,我也在找這個問題的答案,回複的幾位兄台確實沒明白樓主的意思。
沒google到答案,我個人的理解,這是給IDE看的,
@property關鍵字作為轉義,IDE遇到這類注釋,自動為其加入屬性列表(即使它不存在,你可以按這個格式添加一個不存在的屬性試試)。
目的是為一些魔術屬性變得顯式,讓調用的開發人員更清楚,當然,需要IDE的支援
恩,我覺得你說的有道理,這種屬性必須在使用的時候要先賦值,如果沒有賦值會警告的。