{{TOC}} {{DOCVER 4.0=0da300f6445bec5a70d007f503834fce957b065b 16.10.2014 5:19:26, 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 6:21:03, 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15}} == Установка == === С помощью установщика Laravel === %%(DOCNEW 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15) Сначала загрузите установщик Laravel с помощью Composer. %%(sh) composer global require "laravel/installer=~1.1" ~%% Не забудьте поместить каталог %%(t)~/.composer/vendor/bin%% в вашу переменную PATH, чтобы исполняемый файл %%(t)laravel%% мог быть найден при запуске команды %%(sh)laravel%% в терминале. После установки простая команда %%(sh)laravel new%% произведёт установку свежего Laravel в указанный каталог. Например, %%(sh)laravel new blog%% создаст каталог с именем %%(t)blog%%, содержащий свежий Laravel со всеми установленными зависимостями. Этот способ установки намного быстрее, чем установка с помощью Composer. %% %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 6:21:03) .(tl_note) Способ появился в 4.1, но был вскоре удалён. Во-первых, скачайте PHAR-архив --%%(t)http://laravel.com/laravel.phar%%-- установщика Laravel. Для удобства переименуйте файл в %%(t)laravel%% и переместите его в %%(t)/usr/local/bin%%. После установки простая команда %%(sh)laravel new%% произведёт установку свежего Laravel в указанный каталог. Например, %%(sh)laravel new blog%% создаст каталог с именем %%(t)blog%%, содержащий свежий Laravel со всеми установленными зависимостями. Этот способ установки намного быстрее, чем установка с помощью Composer. %% === С помощью Composer === Фреймворк Laravel использует ((http://getcomposer.org/ Composer)) для установки и управления зависимостями. Если вы ещё не сделали этого, начните с ((http://getcomposer.org/doc/00-intro.md установки Composer)). Теперь вы можете установить Laravel, выполнив эту команду в командной строке: %%(sh) composer create-project laravel/laravel your-project-name 4.2 --prefer-dist %% Эта команда загрузит и установит свежую версию Laravel в новую папку %%(t)your-project-name%% в вашем текущем каталоге. Если захотите, вы можете вручную скачать копию ((git:laravel/archive/master.zip репозитория Laravel с GitHub)). Затем выполните команду %%(sh)composer install%% в созданной вами корневой папке проекта. Эта команда загрузит и установит зависимости фреймворка. === Разрешения === После установки Laravel вам может потребоваться предоставить веб-серверу разрешения на запись в каталоги **app/storage**. Подробности о настройке смотрите в ((docs/v4/installation статье по установке)). %%(DOCNEW 4.1=efd541a0b218b1c6aafb73f0051c18ed150e3c24 25.05.2014 05:21:00) === Обслуживание Laravel === Как правило, вы можете использовать веб-сервер, такой как Apache или Nginx, чтобы обслуживать ваши приложения Laravel. Если вы работаете с PHP 5.4+ и хотите использовать встроенный в PHP сервер для разработки, вы можете использовать команду %%(sh)serve%% Artisan: ~%% php artisan serve ~%% %% ===Структура каталогов=== После установки изучите структуру папок. Папка **app** содержит подпапки, такие как **views**, **controllers** и **models**. Большая часть кода вашего приложения будет находиться где-то внутри них. Вы также можете посмотреть на содержимое %%(t)app/config%% и на настройки, которые доступны для изменения. %%(DOCNEW 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15) == Локальная среда разработки == Раньше настройка локальной среды PHP-разработки на своей машине была утомительной. Установка нужной версии PHP, требуемых расширений и других необходимых компонентов отнимает много времени и сил. Попробуйте новый способ - ((/docs/v4/homestead Laravel Homestead)). Homestead - простая виртуальная машина, созданная для Laravel и ((http://vagrantup.com Vagrant)). Поскольку Vagrant-коробка Homestead заранее снабжена всем необходимым ПО для создания надёжных PHP-приложений, вы можете создать виртуальную, изолированную среду разработки за считанные секунды. Вот список некоторых вещей, включённых в Homestead: * Nginx * PHP 5.6 * MySQL * Redis * Memcached * Beanstalk Не волнуйтесь, хотя "виртуальная среда" звучит сложно, на самом деле это совсем не так. И VirtualBox и Vagrant, необходимые для Homestead, имеют простые графические установщики для всех популярных ОС. Для начала взгляните на ((/docs/v4/homestead документацию Homestead)). %% == ((#маршрут)) Маршрутизация == Для начала давайте создадим наш первый маршрут (//route//). В Laravel самый простой маршрут - функция-замыкание (//closure//). Откройте файл %%(t)app/routes.php%% и добавьте этот код в его конец: %%(php) Route::get('users', function () { return 'Users!'; }); %% Теперь если вы перейдёте в браузере на адрес %%(t).../users%%, то должны увидеть текст %%Users!%%. Отлично! Вы только что создали свой первый маршрут. Маршруты также могут быть привязаны к классу контроллера. Например: %%(php) Route::get('users', 'UserController@getIndex'); %% Этот маршрут сообщает Laravel, что запросы к %%(t)/users%% должны вызывать метод %%getIndex()%% класса %%UserController%%. Для дополнительной информации см. ((docs/v4/controllers раздел о контроллерах)). == ((#шаблон)) Создаём шаблон == Давайте теперь создадим простой шаблон, или вид (от англ. //view//), чтобы показывать информацию о наших пользователях. Шаблоны находятся в %%(t)app/views%% и содержат HTML-код вашего приложения. Мы создадим два новых шаблона в этой папке: %%(t)layout.blade.php%% и %%(t)users.blade.php%%. Начнём с %%(t)layout.blade.php%%: %%(html)

Laravel Quickstart

@yield('content') %% Теперь создадим %%(t)users.blade.php%%: %%(html) @extends('layout') @section('content') Users! @stop %% Кое-что из этого кода, возможно, выглядит для вас весьма странно. Это из-за того, что мы используем шаблонизатор Laravel - //Blade//. Blade очень быстр благодаря тому, что это всего лишь набор регулярных выражений, которые преобразуют ваши шаблоны в чистый код на PHP. Blade позволяет наследовать шаблоны, а также добавляет "синтаксический сахар" к таким частоиспользуемым PHP-конструкциям, как **if** и **for**. Для информации см. ((docs/v4/templates раздел о Blade)). Теперь, когда у нас есть шаблоны, давайте используем их в нашем маршруте %%(t)/users%%. Вместо возврата простой строки %%Users!%% мы вернём экземпляр шаблона: %%(php) Route::get('users', function () { return View::make('users'); }); %% Замечательно! Вы создали шаблон маршрута, который наследует разметку страницы (шаблон %%(t)layout%%). А теперь перейдём к работе с базой данных. == Создаём миграцию == Для создания таблицы для хранения наших данных мы используем //систему миграций// Laravel. Миграции позволяют вам определять изменения в БД, используя выразительный синтаксис, а затем легко делиться ими с остальными членами вашей команды. Для начала настроим соединение с БД. Все соединения настраиваются в файле %%(t)app/config/database.php%%. По умолчанию Laravel использует MySQL, и для работы вам нужно указать здесь параметры подключения. Если хотите, можете установить параметр %%(t)driver%% в значение %%(t)sqlite%% и Laravel будет использовать базу данных ((ВП:SQLite)), которая находится в папке %%(t)app/database%%. Для создания миграции мы воспользуемся ((docs/v4/artisan утилитой командной строки Artisan)). Выполните следующую команду в корневой папке вашего проекта: %%(sh) php artisan migrate:make create_users_table %% Теперь найдите созданный файл миграции в папке %%(t)app/database/migrations%%. Он содержит класс с двумя методами: %%(t)up%% и %%(t)down%%. В методе **up** вам нужно произвести требуемые изменения в таблицах, а в методе **down** вам нужно их откатить. Давайте создадим такую миграцию: %%(php) public function up() { Schema::create('users', function ($table) { $table->increments('id'); $table->string('email')->unique(); $table->string('name'); $table->timestamps(); }); } public function down() { Schema::drop('users'); } %% Теперь мы можем применить миграцию через командную строку, используя команду **migrate**. Просто выполните её в корне проекта: %%(sh) php artisan migrate %% Если вам нужно откатить миграцию - выполните команду %%(t)migrate:rollback%%. Теперь, когда у нас есть таблица, начнём загружать данные! == Eloquent ORM == Laravel поставляется с замечательной [[ВП:ORM]] (!!(tl_note) механизм связывания записей БД с объектами PHP - //прим. пер.//!!) - //Eloquent//. Если вы программировали в библиотеке Ruby on Rails, то она покажется вам знакомой, так как Eloquent следует принципам ActiveRecord при взаимодействии с базами данных. Для начала создадим //модель//. В Eloquent модель используется для запросов к соответствующей таблице в БД, а также представляет отдельную запись (//record//) внутри неё. Не беспокойтесь, скоро это станет куда понятнее! Модели обычно хранятся в папке %%(t)app/models%%. Создадим файл %%(t)User.php%% с таким кодом: %%(php) class User extends Eloquent {} %% Заметьте, что нам не нужно указывать, какую таблицу нужно использовать. Eloquent следует множеству соглашений, одно из которых - то, что имя таблицы соответствует множественному числу имени класса её модели (!!(tl_note) user -> users - //прим. пер.//!!). Это очень удобно! Добавьте новые записи в таблицу %%(t)users%%, используя ваш любимый инструмент для работы с БД, и мы посмотрим, как Eloquent позволяет их получить, а затем передать в ((#шаблон)). Итак, изменим наш ((#маршрут)) %%(t)/users%%: %%(php) Route::get('users', function () { $users = User::all(); return View::make('users')->with('users', $users); }); %% Посмотрим, что здесь происходит. Сперва мы получаем все записи в таблице %%(t)users%% через метод %%all()%% модели %%User%%. Дальше мы передаём эти записи шаблону через его метод %%with()%%. Этот метод принимает имя переменной и её значение и таким образом делает данные доступными внутри своего кода. Отлично. Теперь мы готовы к тому, чтобы показать пользователей в нашем шаблоне! == Отображаем данные == Теперь, когда мы сделали переменную %%(t)users%% доступной для нашего шаблона, мы можем отобразить её таким образом: %%(html) @extends('layout') @section('content') @foreach ($users as $user)

{{ $user->name }}

@endforeach @stop %% .(tl_note) **Код выше открыт для XSS-атак** - Blade, как и простой код на PHP, не экранирует вывод, поэтому вам нужно следить, чтобы выводимые строки содержали экранированный HTML - //прим. пер.// Вам может быть интересно, куда подевались вызовы **echo**. Blade позволяет вам выводить строки, обрамляя их двойными фигурными скобками (%%(t){{ ... }}%%). Теперь вы можете перейти в браузере к своему маршруту и увидеть имена всех имеющихся пользователей. Это только начало. В этом руководстве вы ознакомились с самыми основами Laravel, но у него есть ещё очень много интересных вещей, которые вам стоит узнать. Продолжайте читать документацию и глубже узнавать возможности, предоставляемые ((docs/v4/eloquent Eloquent)) и ((docs/v4/templates Blade)). А может вам больше интересны ((docs/v4/queues очереди)) и ((docs/v4/testing юнит-тесты))? Или же вам хочется размять мускулы с ((docs/v4/ioc контейнером IoC))? Выбор за вами! %%(DOCNEW 4.2=d7b13440c003218ed79e9d508706eca01990122f 4.12.2014 5:01:15) == Развёртывание приложений == Одна из задач Laravel - сделать разработку PHP-приложений приятной, начиная со скачивания и заканчивая развёртыванием. ((https://forge.laravel.com Laravel Forge)) обеспечивает простой способ для развёртывания ваших Laravel-приложений на "молниеносных" (blazing-fast) серверах. Forge умеет настраивать и обеспечивать работу приложений на DigitalOcean, Linode, Rackspace и Amazon EC2. Как и в Homestead, в него уже включены последние версии таких продуктов: Nginx, PHP 5.6, MySQL, Postgres, Redis, Memcached и др. С помощью функции Forge "Quick Deploy" вы можете разворачивать свой код каждый раз, когда вы вносите изменения на GitHub или Bitbucket! Помимо этого, Forge может помочь вам настроить обработчики очередей, SSL, Cron-задания, поддомены и многое другое. Загляните на официальный ((https://forge.laravel.com сайт Forge)). %%