Сегодня я поставил перед собой задачу реализовать подход Laravel MVC (модель, представление, контроллер) с использованием чистого PHP. Чтобы решить эту проблему, я использовал стандартный механизм шаблонов Laravel Blade для части представления проекта, но без установки Laravel, поскольку мой проект представляет собой чисто ванильный PHP. Вот как я добился этой интеграции;
Я начал с установки пакета под названием Blade от JensSegers с помощью следующей команды Composer:
composer require jenssegers/blade
Этот пакет позволяет использовать шаблонизатор Blade как отдельный пакет, что делает его совместимым с любым проектом PHP, а не только с Laravel.
Затем я выполнил следующую команду, чтобы обновить зависимость освещения/просмотра пакета до версии 11.7.0, поскольку пакет не работает корректно с версиями ниже 11.7.0:
composer require illuminate/view:11.7.0
Затем я создал базу данных под названием «pdotest» с таблицей под названием «post», в которой есть столбцы «имя» и «тело». Я заполнил эту таблицу данными («это имя сообщения из базы данных, отображаемое с помощью механизма шаблонов Blade», «это тело сообщения из базы данных, отображаемое с помощью механизма шаблонов Blade») соответственно и подключился к нему, создав файл Database.php в корне моего проект и вставьте следующий код:
host;dbname=$this->database",$this->username,$this->password); // $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // $conn = $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); return $conn; } catch (PDOException $e) { echo "Connection failed: " . $e->getMessage(); } } } ?>
Затем я создал каталог под названием «Модели» для всех манипуляций с базой данных. Внутри этого каталога я создал файл Post.php для обработки операций с таблицей «post». В этом файле я определил метод post для получения сообщения по его идентификатору, как показано ниже:
conn = (new Database)->connect(); // Access directly (less secure) } public function getPost($id){ $stmt= "SELECT * FROM $this->table WHERE id = :id"; $stmt = $this->conn->prepare($stmt); $stmt->bindParam(':id', $id, PDO::PARAM_INT); $stmt->execute(); return $result = $stmt->fetch(); } } ?>
Затем я создал index.php, который будет действовать как маршрутизатор, соединяя мой контроллер, представление и модель. Внутри него я импортировал все свои представления и пути кеширования, которые я создам для размещения своих представлений Blade и файлов кеша. Эти пути затем были переданы классу Blade, который входит в пакет Blade, который мы установили вначале. Затем я передал этот экземпляр Blade классу PostController, который создам, и вызвал метод post этого класса, чтобы в будущем получить сообщение по его идентификатору.
post(); ?>
Затем я создал каталог «контроллеры» в корне моего проекта. Внутри него я получил переменную Blade из index.php (маршрутизатора), вызвал метод getPost модели Post, чтобы получить сообщение по его идентификатору, и передал это сообщение в представление Blade под названием «домашняя страница».
blade = $blade; } public function post(){ $post = (new Post)->getPost(1); echo $this->blade->render('homepage', ['post' => $post]); } } ?>
Затем я создал каталог под названием «views» и файл с именем homepage.blade.php в корне проекта. Внутри этого файла я просто отобразил имя сообщения, переданного из PostController, как показано ниже:
{{$post['name']}}
Наконец, я создал каталог «кэш» в корне моего проекта для хранения файлов кэша Blade, что помогает повысить производительность моего проекта.
Теперь, когда вы посетите http://localhost/laravel-blade-without-laravel/index.php в своем браузере, вы увидите имя сообщения, отображаемое как «это имя сообщения из базы данных, отображаемое с использованием шаблона Blade». двигатель."
Спасибо, что прочитали этот пост об использовании механизма шаблонов Laravel Blade в чистом PHP-проекте. Я надеюсь, что это поможет вам в вашем пути развития. Меня зовут Вазири Элли Амири, веб-разработчик из Моши, Танзания. Я специализируюсь на работе с Laravel и люблю помогать другим начать работу с этим мощным фреймворком. Не стесняйтесь обращаться, если у вас есть какие-либо вопросы или вам нужна дополнительная помощь.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3