Статьи

Laravel: действительно ли он чистый и стильный?

Laravel — это чистый и стильный фреймворк для веб-разработки на PHP. Освободив вас от спагетти-кода, Laravel поможет вам создавать прекрасные приложения, используя простой и выразительный синтаксис. Развитие должно быть творческим опытом, который вам нравится, а не чем-то болезненным. Наслаждайтесь свежим воздухом.

Это текст, который можно найти на домашней странице Laravel, и если бы мы поверили в это, разве это не было бы замечательно? Давайте проверим это утверждение, построив простое приложение TODO, и посмотрим, сколько усилий мы должны приложить к нему.

Миграции

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

В Laravel есть функция миграции, с которой вы, возможно, уже знакомы, если использовали другие фреймворки, такие как Ruby on Rails. Миграции — это файлы, которые используются для обновления вашей базы данных. По мере выполнения они изменяют схему вашей базы данных таким образом, что вы легко можете применить к ней обновления.

Для нашего приложения миграция выглядит примерно так:

<?php class Create_Todo_Table { public function up() { Schema::table("todos", function($table) { $table->create(); $table->increments("id"); $table->string("title", 20); $table->text("description"); $table->timestamps(); }); } public function down() { Schema::drop("todos"); } } 

Метод up() вызывается, когда выполняется миграция, а метод down() вызывается, когда миграция отменяется.

Модель

Поскольку Laravel является инфраструктурой MVC, нам нужно создать модель. Как и в любой другой MVC-структуре, которую вы, возможно, знаете, модель является компонентом, отвечающим за связь с базой данных. Наша таблица проста, и поэтому ей нужна только простая модель:

 <?php class Todo extends Eloquent { public static $timestamps = true; } 

Имя класса — «Todo», и Laravel автоматически свяжет это с таблицей todos в нашей базе данных. Eloquent — это класс ORM для моделей, используемых Laravel, который обеспечивает плавный способ работы с объектами базы данных.

Для свойства $timestamps установлено значение true, что означает, что при создании новой записи или обновлении существующей записи поля updated_at и updated_at будут соответственно обновляться.

Контроллер

Теперь давайте создадим контроллер. Контроллер — это место, где расположена вся бизнес-логика, и поэтому он должен содержать функциональность для:

  • Получить все записи в таблице, чтобы перечислить их
  • Получить информацию о конкретной записи с заданным идентификатором
  • Удалить запись с заданным идентификатором
  • Составьте форму для добавления новой записи
  • Добавьте новую запись в базу данных и составьте сообщение для подтверждения добавления.

Это дает нам следующий класс контроллера с пятью методами, которые мы называем действиями. Декларации действия должен предшествовать префикс «action_».

 <?php class Todo_Controller extends Base_Controller { public function action_list() { $todos = Todo::all(); return View::make("list") ->with("todos", $todos); } public function action_view($id) { $todo = Todo::where_id($id)->first(); return View::make("view") ->with("todo", $todo); } public function action_delete($id) { $todo = Todo::where_id($id)->first(); $todo->delete(); return View::make("deleted"); } public function action_new() { return View::make("add"); } public function action_add() { $todo = new Todo(); $todo->title = Input::get("title"); $todo->description = Input::get("description"); $todo->save(); return View::make("success"); } } 

Код очень прост. Первый метод action_list() получит все записи в базе данных. Здесь Eloquent упрощает задачу, требуя только Todo :: all () для их извлечения. Затем он возвращает представление, в котором все записи из базы данных связаны с переменной $todos .

Другие методы также легко читаются. В основном они существуют для манипулирования объектом базы данных и возвращения представления с привязанными к нему данными. Последний метод может быть исключением; action_add() будет вызываться при отправке формы для добавления новой записи TODO. Input::get() используется для извлечения отправленных значений формы.

Вид

Теперь мы пришли к мнению. Laravel использует собственный шаблонизатор Blade, который дает нам чистый и читаемый код. Я приведу пример первого представления, список. С with оператора make / with возвращающего представление из action_list() , мы помещаем все результаты Todo::all() в $todos . Теперь мы можем использовать это в представлении:

 <h2>Todo list</h2> <p>{{ HTML::link_to_action("todo@new", "Add new todo") }}</p> <ul> @foreach($todos as $todo) <li>{{ HTML::link_to_action("todo@view", $todo->title, array($todo->id)) }} - {{ HTML::link_to_action("todo@delete", "Delete", array($todo->id)) }}</li> @endforeach </ul> 

Это все, что нужно! Сначала мы позволим Blade создать ссылку на действие контроллера action_new() . Затем мы видим оператор foreach который очень похож на тот, который является родным для PHP. Для каждой задачи мы создаем ссылку для просмотра записи. Текст ссылки — это второй параметр, $todo->title , и все параметры для действия должны быть $todo->title далее. Нам нужен идентификатор записи, которую мы хотим просмотреть, которую предоставляет $todo->id . Мы также создаем ссылку для удаления задачи, снова включая идентификатор TODO в качестве параметра.

Вывод

Итак, это было так, и действительно просто создать приложение, используя Laravel. Код является простым и легко читаемым. Я надеюсь, что это было полезно для вас, и вы подумываете об использовании Laravel с вашим следующим PHP-приложением. Увидимся в следующий раз!

Изображение через Fotolia