Трудно объяснить, что я имею в виду, вот пример.
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» каким-либо образом в индексе perent_class автоматически и после его создания, чтобы не создавать его заново при вызове новой функции. Возможно, я делаю это неправильно, и если есть лучшее решение для того, что я делаю, пожалуйста, напишите об этом.
Спасибо.