$db = new Connect();
$b = $db->query("SELECT * FROM ..")->returnArray(); //не работает
//Fatal error: Call to a member function returnArray() on a non-object in
$db->query("SELECT * FROM ..");
$b = $db->returnArray(); //так работает.
Хотелось бы писать в 1 строчку, я видел что вроде это возможно..
Спустя 14 минут, 40 секунд (29.04.2011 - 14:02) linker написал(а):
Чтобы написать так
$db->query("SELECT * FROM ..")->returnArray()нужно в методе query() вернуть объект, в данном случае я думаю это будет $db, т.е. в конце написать
return $this;
Спустя 58 секунд (29.04.2011 - 14:03) Arni написал(а):
Вот так вот, не зная интерфейса классов мы вам и скажем.
Спустя 17 минут, 8 секунд (29.04.2011 - 14:20) Renden написал(а):
Спасибо, понятно, получилось..
Если не сложно проверьте класс, так можно писать, сойдет?)
Если не сложно проверьте класс, так можно писать, сойдет?)
class Connect {
private $dbhost = "localhost";
private $dbuser = "root";
private $dbpassword = "password";
public $dbname = "dev";
protected $_SQL;
function __construct() {
$this->Connect();
$this->Query("SET NAMES utf8");
}
function Connect() {
mysql_connect($this->dbhost,$this->dbuser,$this->dbpassword);
if (isset($this->dbname))
$this->Db();
}
function Db() {
mysql_select_db($this->dbname);
}
function Query($Sql) {
$this->_SQL = mysql_query($Sql);
return $this;
}
function returnArray($multi = true) {
if (mysql_num_rows($this->_SQL) > 1) {
while ($row = mysql_fetch_assoc($this->_SQL))
$rows[] = $row;
return $rows;
}
elseif($multi) {
$rows[] = mysql_fetch_assoc($this->_SQL);
return $rows;
}
else {
$row = mysql_fetch_assoc($this->_SQL);
return $row;
}
}
}
Спустя 2 минуты, 20 секунд (29.04.2011 - 14:22) linker написал(а):
Ну вроде должно работать.