Re: [請益] Class的一些問題

看板PHP作者 (kid...)時間19年前 (2007/01/23 19:25), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/3 (看更多)
※ 引述《StubbornLin (Victor)》之銘言: : function getDataSource(){ : static $IsCreated = false; : static $DataSource ; : if(!$IsCreated){ : $DataSource = new DataSource; : $IsCreated = true; : } : return $DataSource; : } : 在這裡,我想創造一個唯一的DataSource這個class的reference class MyClass { private static $instance; public function MyClass()//建構子 { self::$instance =& $this; } public static function &get_instance() { return self::$instance; } } 這樣就有唯一的class reference 要注意的是'&'在php跟C++的功能不一樣 php4中物件傳遞是call by value '&'在這裡的功能是call by reference 當然如果可以的話用php5就沒問題了 php5中物件傳遞是CBR : 透過這個函數取得,但是這樣看起來很蠢 : 我用之前在C++裡面的寫法 : function getDataSource(){ : static $DataSource = new DataSource; : return $DataSource; : } 我C++不熟 請問一下這樣會是唯一的class reference嗎 這不會每次呼叫getDataSource()都new一個新的object嗎 : 但是卻得到像這樣的錯誤訊息 : Parse error: parse error, unexpected T_NEW in : /home/customer/kinmen.info/www/test.php on line 38 : 使用的版本是4.3.11 : 請問是因為static的變數 在這個版本裡規定 本來就不能使用new這個operator : 還是我寫的方式不對? : 接著,還有一個問題就是,直接使用Class::Function取得的Class Refrence : 去做->然後存取東西也會出錯 : echo DataSource::getDataSource()->GetData(); : 錯誤訊息 : Parse error: parse error, unexpected T_OBJECT_OPERATOR, expecting ',' or ';' : in /home/customer/kinmen.info/www/test.php on line 52 : 而修正問題的方式我先用一個變數去接class的refrence : 然後再操作這個變數就解決了 : $DataSource = DataSource::getDataSource(); : echo $DataSource->GetData(); : 但是我還是希望能夠直接操作回傳來的class,請問該怎樣寫呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.119.112.156 ※ 編輯: superGA 來自: 140.119.112.156 (01/23 19:26)
文章代碼(AID): #15jV2oQK (PHP)
討論串 (同標題文章)
文章代碼(AID): #15jV2oQK (PHP)