[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: $var = $classobj->method1()->method2()->methodN();
Ignat
Доброго времени суток.

PHP изучаю недавно. Видел, не могу вспомнить где такую реализацию написания запросов.

 
$Q = new Query();
$query = $Q->getQuery()->select("что_выбрать")->from("таблица")->where("условия")->order("условия");


Написал простой класс, пока без проверок


class Query {
public $_query = "";

public function select($what="*") {
$this->_query = "SELECT ".$what;
return $this;
}

public function from($table) {
$this->_query .= " FROM `$table`";
return $this;
}

public function where($cond) {
$this->_query .= " WHERE ".$cond;
return $this;
}
public function order($cond) {
$this->_query .= " ORDER BY $cond";
return $this;
}

public function limit($cond) {
$this->_query .= " LIMIT $cond";
return $this;
}

function getQuery() {
return $this->_query;
}
}


Таким способом работает

$Q->select()->from("articles")->where("id>10")->order("id DESC");
$query = $Q->getQuery();
echo $query; // результат SELECT * FROM `articles` WHERE id>10 ORDER BY id DESC

А в результате выполнения такого кода
$query = $Q->getQuery()->select()->from("articles")->where("id>10")->order("id DESC");
echo $query;

получаю такую ошибку
Fatal error: Call to a member function select() on a non-object 

Подскажите пожалуйста, как вообще можно реализовать такой функционал?



Спустя 1 час, 16 минут, 23 секунды (16.03.2010 - 15:41) glock18 написал(а):
getQuery возвращает строку, а не объект

Спустя 41 минута, 19 секунд (16.03.2010 - 16:22) Игорь_Vasinsky написал(а):
function getQuery() {
return $this->_query;
}

опечатка или ошибка?

Спустя 12 минут, 45 секунд (16.03.2010 - 16:35) DedMorozzz написал(а):
Цитата (топикстартер)
public $_query = "";
Так что и не опечатка и не ошибка

Спустя 9 минут, 49 секунд (16.03.2010 - 16:45) Игорь_Vasinsky написал(а):
видимо гость равнодушен к своей проблеме.

Спустя 46 минут, 25 секунд (16.03.2010 - 17:31) qpayct написал(а):
зачем извращатся то так? не проще посылать запрос в одну функцию? rolleyes.gif результат будет тот же, а головной боли и кода меньше. а про ресурсы я вообще молчу.

Спустя 4 часа, 56 минут, 8 секунд (16.03.2010 - 22:27) Ignat написал(а):
Да, я понимаю, что getQuery() возвращает строку, отсюда и ошибка.

А как сделать, чтобы в результате выполнения
$query = $Q->getQuery()->select()->from("articles")->where("id>10")->order("id DESC");
$query была строкой, а не объектом?


Спустя 3 минуты, 26 секунд (16.03.2010 - 22:31) Ignat написал(а):
Получается, ставить метод getQuery() в самый конец
$query = $Q->select()->from("articles")->where("id>10")->order("id DESC")->getQuery();


По другому никак?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.