php中@property的作用?

來源:互聯網
上載者:User
我發現用@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的支援

恩,我覺得你說的有道理,這種屬性必須在使用的時候要先賦值,如果沒有賦值會警告的。

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.