Closed pafnuty closed 8 years ago
По всей видимости, причина использования была в том, чтобы гарантировать существование только одного экземпляра класса. Обычно singleton используют для хранения неизменных данных, обёрток по работе с БД и т.д.
Я у себя тоже модифицировал, сразу же как начал данный класс использовать=).
@blind-cobra думаю да, т.к. на странице могло быть несколько вызовов класса ClassName и из-за этого возникала ошибка. Значит не мне одному полезна такая модификация :smile:
Решил вопрос немного иначе:
class DbClass extends SafeMySQL {
public static function init($options = []) {
static $db;
if (!is_object($db)) {
$db = new DbClass($options);
}
return $db;
}
}
А уже там, где необходимо делаю:
class Main {
public $db;
function __construct() {
$this->db = DbClass::init([
'host' => DBHOST,
'user' => DBUSER,
'pass' => DBPASS,
'db' => DBNAME,
'charset' => COLLATE,
]);
}
}
Вчера на одном из проектов обнаружил, что немного модифицировал класс, добавив возможность вызова без создания нового экземпляра. Уже не помню по какой причине это было сделано, но вдруг окажется полезным, поэтому решил оформить pull request.
В проекте у меня используется так: