Intereting Posts
Синтаксис для инструкции if / else, если вставка была успешной в подготовленном заявлении PDO Изображение не загружается для некоторых страниц по умолчанию. Загрузите несколько изображений в ZIP Google API php client: отправить etag PHP XML Удалить родителя Пользовательская проверка не работает – Yii2-app-basic-Yii2 Как добавить настраиваемое текстовое поле в Magento v1.5 Catalog / Mange / вкладка General в панели администратора? Локатор сервисов, Инъекция зависимостей (и контейнера) и инверсия управления Невозможно использовать mysql_real_escape_string Общий обход дерева (бесконечный) в режиме поиска в ширину Альтернатива для PHP-почты выбор одной записи с использованием PHP PDO и результата возврата Я не могу найти ошибку в php (все начинается здесь: http://stackoverflow.com/questions/30393024/) PHP: file_exists vs stream_resolve_include_path – Что лучше? Отправка электронной почты с помощью Swift Mailer, GMail и PHP, отказ от прав доступа

Как создать многопроцессорные функции в PHP5

У меня вопрос о ООП в PHP5. Я видел все больше и больше кода, написанных так:

$object->function()->first(array('str','str','str'))->second(array(1,2,3,4,5)); 

Но я не знаю, как создать этот метод. Надеюсь, кто-то может мне помочь здесь: 0) большое спасибо.

Ключом к методам цепочки, подобным тому, что есть в ваших собственных классах, является возврат объекта (почти всегда $this ), который затем используется как объект для следующего вызова метода.

Вот так:

 class example { public function a_function() { return $this; } public function first($some_array) { // do some stuff with $some_array, then... return $this; } public function second($some_other_array) { // do some stuff return $this; } } $obj = new example(); $obj->a_function()->first(array('str', 'str', 'str'))->second(array(1, 2, 3, 4, 5)); 

Обратите внимание, что можно вернуть объект, отличный от $this , и связанный с ним материал – это всего лишь более короткий способ сказать $a = $obj->first(...); $b = $a->second(...); $a = $obj->first(...); $b = $a->second(...); , минус уродство настроек переменных, которые вы больше никогда не будете использовать после вызова.

 $object->function()->first(array('str','str','str'))->secound(array(1,2,3,4,5)); 

Это не является строго правильным PHP, но это то, что вы говорите … Вы вызываете метод класса $ object, который сам возвращает объект, в который вы вызываете метод first() который также возвращает объект, в котором вы вызываете метод под названием second() .

Таким образом, это не обязательно один класс (хотя это может быть) с одним методом, это целая серия, возможно, разных классов.

Что-то вроде:

 class AnotherClass { public function AnotherClassMethod() { return 'Hello World'; } } class MyClass { public function MyClassMethod() { return new AnotherClass(); } } $object = new MyClass(); echo $object->MyClassMethod()->AnotherClassMethod(); // Hello World