它很難解釋我的意思,所以在這裏舉一個例子。如何使用變量創建新的類實例
class mysql { public function __construct(){ //connect to db and select table } .... } class Index Extends perent_class { public $mysql; public function no_mysql_required(){ //this function might be called and no mysql is required } public function mysql_required(){..} // this needs mysql. public function mysql_required2(){..} // this needs mysql. public function mysql_required3(){..} // this needs mysql. }
選項1:
$this->mysql = new mysql();它添加到需要的MySQL連接的所有功能,但有兩個這些功能可以被調用,並且會創建兩個連接到MySQL這是壞的。
選項2:
if(!is_object($this-mysql)) $this->mysql = new Mysql();這將只創建一個mysql對象並解決問題,但會在函數中創建非常重複的代碼。創建&調用函數$ this-> start_mysql()也是重複的。
所以我真正想要的是每當我打電話$ this-> mysql-> function();即使尚未創建它,也會自動創建「$ this-> mysql = new Mysql」,並自動創建一次,但不會在創建新函數時重新創建它。我可能會做這個錯誤,如果有更好的解決方案,我在做什麼,請張貼它。
謝謝。