|
|
|
| здравствуйте
скажите вот так нормально?
class db
{
function connect()
{
$mysqli = new mysqli($this -> host, $this -> user, $this -> password, $this -> database);
return $mysqli;
}
function close($link)
{
$link-> close();
}
}
$db = new db();
$link = $db->connect();
....
$db->close($link)
|
то есть меня смущает "таскание" объекта по всем остальным методам класса db | |
|
|
|
|
|
|
|
для: moonfox
(26.12.2013 в 22:05)
| | Сделайте методы статичными. | |
|
|
|
|
|
|
|
для: Enter
(27.12.2013 в 01:42)
| | не, лажовый вариант, хотя бы с точки зрения тестов. аффтар, попробуйте вот так
<?php
class db
{
protected $mysqli;
function connect()
{
if ($this->mysqli === NULL) {
$this->mysqli = new mysqli($this -> host, $this -> user, $this -> password, $this -> database);
}
return $mysqli;
}
function close()
{
if ($this->mysqli !== NULL) {
$link-> close($this->mysqli);
}
}
}
|
| |
|
|
|
|
|
|
|
для: psychomc
(27.12.2013 в 13:02)
| | почему, лажовый. Статичные методы быстрее "работают". Аффтару как раз и не надо плодить объекты. Если не надо, то пусть пользуется статичными методами. И почему у вас return $mysqli; ? | |
|
|
|
|
|
|
|
для: Enter
(27.12.2013 в 14:52)
| | лажовый, потому что не гибкий. не удобно будет писать юнит-тесты, сделать более одного подключения к базе данных тоже будет проблематично в таком классе. что-то я не увидел, где автор написал, что ему не нужно плодить объекты. короче, класс в первую очередь должен быть удобным и гибким. да, нужно return $this->mysqli, описка.
по поводу быстрее работают...имхо, можете даже не смотреть в эту сторону, когда речь идёт о классе, работающем с базой данных. дело в том, что каким бы ни был быстрым код самого класса, всё равно всё время сожрет именно подключение к базе данных, поэтому в данном случае совсем не принципиально. и вообще, лучше использовать pdo | |
|
|
|