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