Пусть методы возвращают объекты описанными методами, и вы получите то, что вам нужно.
Таким образом, пока $DB
является объектом с comments()
-методом, эта часть является действительной. Если этот comments()
возвращает объект с id()
-методом, эта часть также действительна. Затем id()
необходимо вернуть объект с limit()
-методом.
В вашем конкретном случае вы можете сделать что-то вроде этого:
class DB {
public function comments() {
// do preparations that make the object select the "comments"-table...
return $this;
}
public function id($string) {
// handle this too...
return $this;
}
public function limit($int) {
// also this
return $this;
}
public function execute() {
$success = try_to_execute_accumulated_db_commands();
return $success;
}
}
$DB = new DB();
$DB->comments()->id(" > 3")->limit(10);
В моем примере каждый метод (также не показанный здесь) будет возвращать сам объект, так что команды могут быть объединены в цепочку. Когда построение запроса к базе данных завершено, вы фактически оцениваете запрос, вызывая execute()
, который (в моем случае) вернет логическое значение, которое будет представлять успех выполнения базы данных.
Пользователь nickohm предположил, что это называется свободный интерфейс . Я должен признать, что это новый термин для меня, но это говорит, вероятно, больше о моих знаниях, чем использование термина. ( «Я просто пишу код, вы знаете ...» )
Примечание: $this
- это «магическая» переменная, которая указывает на текущий активный объект. Как следует из названия, оно просто возвращает себя в качестве возвращаемого значения для метода.