有些物件的操作方式是不允許的
- 在新增物件時不能直接呼叫成員函數
- 要透過函數才能建立匿名函數
- <?php
- class DataCheck {
- // 成員變數
- public $value=null;
- // 建構子
- public function __construct($value) {
- $this->value=$value;
- return $this;
- }
- // 成員函數
- public function getValue() {
- return $this->value;
- }
- }
- // PHP 物件的使用方式
- $a = new DataCheck("test");
- $v = $a->getValue();
- // 一般物件的使用方式
- $v = new DataCheck("test")->getValue(); //Error
- /* 但這樣做在 PHP5 中是不可行
- * PHP5 對物件的架構還不是很完善
- * 為了達到這樣的使用方式
- * 建議使用物件中的靜態成員函數去達成
- * 會比在 new 外加一個 () 要好多了
- * 也可以在生成物件前做一些前置處理
- * */
- /**######################################################*/
- class DataCheck {
- // 靜態函數建立物件
- public static function Value($value) {
- return (new DataCheck($value));
- }
- // 成員變數
- public $value=null;
- // 建構子
- public function __construct($value) {
- $this->value=$value;
- return $this;
- }
- // 成員函數
- public function getValue() {
- return $this->value;
- }
- }
- // 利用靜態函數建立物件
- $v = DataCheck::Value("test")->getValue();
- /* 這樣就可以達成我們期望的方式
- * 但最好還是希望 PHP 能夠對物件有更好的架構出現
- * */
0 回應:
張貼留言