Создание собственного фреймворка. Обработка AJAX. Урок 13

preview_player
Показать описание
Премиум уроки по созданию сайта:

Продолжим создание собственного PHP фреймворка. По итогу мы должны получить вполне функциональное решение, а заодно познакомиться с принципами работы современных PHP фреймворков.

В данном уроке мы детальнее поработаем с обработкой запросов AJAX. В частности, мы реализуем возможность подключения видов в ответ на асинхронный запрос. Также мы немного изменим добавление метатегов к странице. Ну и, наконец, немного оптимизируем код, избавившись от дублирования. Для этого мы используем трейты.

В видео версии урока вы найдете ответы на такие вопросы:

• Как подключить вид в ответ на AJAX запрос?
• Как реализовать заполнение метатегов в шаблоне?
• Что такое трейты и чем они нам могут быть полезны?

Рекомендации по теме
Комментарии
Автор

Шикарные уроки смотрятся на одном дыхании, все доступно объясняется. Большое спасибо!

RomanRachkov
Автор

Очень интересные уроки. Одним выстрелом двух зайцев убиваю. На практике изучаю php и принцип фрэймворков. Могу сказать, что из всех уроков по php это самые результативные в плане получения реальных навыков работы и понимания как дальше продолжать изучение самостоятельно. Спасибо за Вашу работу!

sergiyshevchenko
Автор

Обалдеть! То что нужно! Столкнулся с аяксом и дай думаю пойду спрошу а тут уже готовый четырёх этажный ответ лежит) Спасибо Андрей как всегда выручаете!

vitalyorlov
Автор

Андрей, огромное спасибо за Ваши труды, за подробные и детальные объяснения, за манеру ведения уроков! Немного с запозданием до них добрался, но смотрится на одном дыхании!)

hfdellj
Автор

Было бы круто, если сделать серию видео по книге Мэтта Зандстры "Шаблоны проектирования"

free
Автор

За уроки огромное спасибо!!!
Андрей, в Singletone конструктор должен быть приватный (т.е. нельзя создать объект вызвав new). А у вас получается что можно создать экземпляр класса. Лучше наверное убрать конструкторы из классов, а в них реализовать метод init(). Данный метод будет вызываться из приватного конструктора, описанного в трейте:
namespace vendor\core;

trait Singleton
{
private static $instance;

public static function getInstance()
{
if (empty(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}

// Заглушка, если данный метод не нужно реализовывать в классе, использующем данный trait
protected function init() { }

private function __construct()
{
$this->init();
}

private function __wakeup() { }

private function __clone() { }
}

mr.tygrys
Автор

Огромное спасибо за Ваш труд! Жаль, только, создалось впечатление, что вы больше не посещаете эти уроки. Конечно, уже столько лет прошло... Но все равно учусь на Ваших уроках, так как они лучшие в инете!

wpinyeu
Автор

Возможно я ещё не дошел до такого урока, но хотелось бы увидеть как подключать сторонние библиотеки например для обработки изображений и так далее. В принципе я думаю самому сложности не составит, но все же хочеться убедиться что я правильно делаю. Спасибо за уроки, как всегда нет слов!

masterphp
Автор

было бы круто узнать как в видах получать другие виды. Например есть вид post и на этой же странички с видом пост нужно вытащить отзывы, хотелось бы для отзывов иметь свой контролер и вид.

katrinamerika
Автор

Андрей, спасибо огромное за уроки! Очень полезно, информативно и доступно объясняете! Время покупать доступ к премиум )) хе-хех
И да, кстати у меня вопрос, он особо не касается данной темы видеоурока: конечный вывод html страницы можно как нибудь красиво и структурировано выровнять?

AsTaR
Автор

Заждались уже продолжения, Андрей. Когда планируется сделать продолжение?

qfgrnsy
Автор

Очень хотелось бы прикрутить phpMailer и библиотеку Monolog

artemmiusov
Автор

Андрей, здравствуйте. актуальны ли сейчас приемы используемые в данной серии уроков? хочу купить ваш курс по php от теории к практике, где вы пишите интернет магазин. стоит ли сначала попрактиковаться на этих серии уроков?

base-color
Автор

Андрей, Здравствуйте. Вот вам предложение для видео: Сделать пример API доступа
Спасибо за урок! Жду продолжения :)

TheNcoding
Автор

Есть парочка предложений:
1) Реализовать класс для Вывода HTML Тэгов так сказать хелпер, что позволит сделать Код Чище.
2) Реализовать конструктор SQL запросов

kosoystudio
Автор

Я ещё чего-то не понимаю? Данные, запрошенные методом Ajax, должны выводиться в конечном итоге в текущем Виде, то есть у нас это "Main/Index", где и происходит запрос, так? Вопрос такой - как же всё-таки при аjax-запросе увидеть нужные нам данные, не перезагружая текущую страницу, не в консоли, а, собственно, где-нибудь на этой-же странице? Спасибо.

androgenius
Автор

Спасибо за Ваш труд Андрей.
Есть просьба, если возможно, рассказать о работе с исключениями, в пространстве имён. Либо подсказать, где можно почитать материал.
Спасибо.

qfgrnsy
Автор

Здравствуйте. Какой Вы хитрый, проверяете на знание MVC, ведь вывод в контроллере это прямое нарушение данного, за исключением AJAX, но для него создают отдельный класс.
Лучше бы в App-контроллер вынести все поля для тега head, (desc, keywords, title) и прочие так гарантированно что эти поля будут заполнены, а в классах наследниках, либо добавлять мета-данные, или расширять уже заполненые.
Тема для следующего урока: хорошо бы описать класс ошибок и запись в лог.
страничка 404 тоже нужна

alexyebar
Автор

по поводу трейтов понятно, только не понятно зачем их придумали, если тоже самое делает include или require

grantorino
Автор

Спасибо за шикарные уроки! У меня несколько вопросов:
1. По домашнему заданию. Я не писал дополнительных методов. Я сделал лейаут с таким содержимым: <?=$content?>. Назвал его ajax. Т.е. без всяких хедеров, боди и т.д. Когда аякс запрос, использую этот лейаут (можно, наверное, даже автоматом этот лейаут ставить при аякс запросах). В результате у меня прилетает только вьюшка. Получается такой же результат как у Вас. На сколько это правильно?
2. Зачем мы пишем setMeta в классе вьюшки, если этот метод у нас уже есть в классе контроллера? Можно этот метод вызвать в конструкторе контроллера и избавиться от всех ошибок т.к. все параметры выставятся в пустые значения
3. И еще один вопрос. Я его задавал в старых уроках (7 урок про RedBeanPHP), видимо, Вы его не заметили. Продублирую: Вам не кажется что такое подключение библиотеки RedBeanPHP уводит нас в сторону от паттерна MVC? По факту модель (в классическом её понимании) становится не нужна, т.к. работа с БД идет в контроллерах через методы RedBeanPHP. Возможно, стоит методы RedBeanPHP обернуть в методы нашей модели? Или базовый класс модели наследовать от R класса?

DimkaPetr