SlideShare a Scribd company logo
25 причин
попробовать
Laravel
$speaker = ‘Алексей Плеханов’;
Алексей Плеханов: 25 причин попробовать Laravel
Красноречивые запросы*
class Order extends Eloquent {}
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.
Красноречивые запросы*
class Order extends Eloquent {}
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.
Order::all();
Красноречивые запросы*
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.
Order::orderBy('date','desc')->get();
Красноречивые запросы*
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.
$order = new Order;
$order->title = 'Xbox One';
$order->save();
Гибкий роутинг
Route::get('orders', function()
{
return View::make('orders.index')
->with('orders', Order::all());
});
Гибкий роутинг
Route::get('orders','OrdersController@index');
RESTful-контроллеры
Route::controller('users',
'UserController');
RESTful-контроллеры
Route::controller('users',
'UserController');
class UserController extends BaseController {
public function getIndex() {
return View::make(‘user.index’);
}
public function postProfile() {
$profile = new Profile();
}
public function anyLogin() {
return View::make(‘user.login’);
}
}
Ресурс контроллеры
Route::resource('users', 'UserController');
Ресурс контроллеры
Route::resource('users', 'UserController');
● GET /users
● GET /users/:order
● GET /users/create
● GET /users/:order/edit
● POST /users
● PUT /users/:order
● PATCH /users/:order
● DELETE /users/:order
Ресурс контроллеры
Relations
class Task extends Eloquent {
public function user() {
return $this->belongsTo('User');
}
}
class User extends Eloquent {
public function tasks() {
return $this->hasMany('Task');
}
}
Relations
$user = User::find(1);
$tasks = $user->tasks;
Relations
$task = Task::find(1);
$user = $task->user;
Кеш запросов в базу
Question::remember(60)->get();
Композиторы шаблонов
View::composer('layouts.nav', function($view)
{
$view->with('tags', ['tag1', 'tag2']);
});
Простая авторизация
$user = [
'email' => 'email',
'password' => 'password'
];
if (Auth::attempt($user))
{
return View::make(‘dashboard’);
}
Blade шаблонизатор
@if ($orders->count())
<ul>
@foreach($orders as $order)
<li>{{{ $order->title }}}</li>
@endforeach
</ul>
@endif
SSH
SSH::into('production')->run([
'cd /var/www',
'git pull origin master'
]);
* Laravel >= 4.1.0
События
Event::listen('user.signUp', function()
{
$user = new User([‘email’ => ‘ap@ex.cc’,
‘password’ => ‘12345’]);
});
События
Event::listen('user.signUp', function()
{
$user = new User([‘email’ => ‘ap@ex.cc’,
‘password’ => ‘12345’]);
});
Event::listen('user.signUp',
'UserEventHandler');
Pagination
User::paginate(15);
<div class="container">
<?php foreach ($users as $user): ?>
<?php echo $user->name; ?>
<?php endforeach; ?>
</div>
<?php echo $users->links(); ?>
Очереди
Queue::push('SignUpService', compact('user'));
Amazon SQS Beanstalkd Iron.io
Простая валидация
$order = [
'title' => 'Wii U',
'description' => 'Game console from Nintendo'
];
$rules = [
'title' => 'required',
'description' => 'required'
];
$validator = Validator::make($order, $rules);
if ($validator->fails()) {
var_dump($validator->messages()); // массив ошибок
}
Tinker
php artisan tinker
* read-eval-print-loop
Миграции
public function up() {
Schema::create('faqs', function(Blueprint $table) {
$table->integer('id', true);
$table->text('question');
$table->text('answer');
$table->timestamps();
});
}
public function down() {
Schema::drop('faqs');
}
Генераторы
php artisan generate:migration create_users_table --
fields="username:string, password:string"
"way/generators"
Консольные команды
php artisan command:make MyCustomCommand
class MyCustomCommand extends Command {
protected $name = 'command:name';
protected $description = 'Command description.';
public function fire() {}
}
HTML хелперы
Html::mailto('test@ex.cc')
Html::script('js/app.js')
Html::style('css/body.css')
HTML хелперы
Html::mailto('test@ex.cc')
Html::script('js/app.js')
Html::style('css/body.css')
<a href="&#x6d;&#97;&#x69;&#108;&#116;o&#58;&#x74;&#101;s&#116;&#64;&#101;&#120;&#x2e;
&#99;c">&#x74;&#101;s&#116;&#64;&#101;&#120;&#x2e;&#99;c</a>
HTML хелперы
{{ Html::mailto('test@ex.cc') }}
{{ Html::script('js/app.js') }}
{{ Html::style('css/body.css') }}
{{ Form::open() }}
{{ Form::text('name') }}
{{ Form::textarea('bio') }}
{{ Form::selectYear('dob', date('Y') - 80, date('Y')) }}
{{ Form::close() }}
Связь модели с формой
{{ Form::model($order) }}
<div>
{{ Form::label('title', 'Title:') }}
{{ Form::text('title') }}
</div>
<div>
{{ Form::label('description', 'Description:') }}
{{ Form::textarea('description') }}
</div>
{{ Form::close() }}
IoC
public function __construct(MyDependency $thing) {
$this->thing = $thing;
}
IoC
public function __construct(MyDependency $thing) {
$this->thing = $thing;
}
$myClass = App::make('MyClass');
Фасады
Auth::check()
Auth::attempt()
Cache::put()
Session::put()
Mail::send() Queue::push()
Фасады
Auth::check()
Auth::attempt()
Cache::get()
Session::put()
Mail::send() Queue::push()
$value = $app->make('cache')->get('key');
Environments
$env = $app->detectEnvironment([
'local' => ['your-machine-name'],
]);
Environments
$env = $app->detectEnvironment([
'local' => ['your-machine-name'],
]);
$env = $app->detectEnvironment(function()
{
return getenv('ENV_NAME') ?: 'local';
});
Простые конфиги
<?php // app/config/development/billing.php
return [
'api_key' =>'Dad2#@@d'
];
Config::get(‘billing.api_key’)
Обучаемость
https://leanpub.com/codebright https://laracasts.com/
https://leanpub.com/laravel
Спасибо за внимание!
aplekhanov
@
dataart.com
vk.com/pugdnepr

More Related Content

PDF
Почему Mojolicious?
PPT
plwww (24.03) MEPHI (PHDays)
PPT
Юрий Гольцев - Сервис PLWWW
PPT
Что нового в PHP-5.3
PDF
Perl: Symbol table
PDF
Perl 5.10 и 5.12
PPTX
PHP basic
PDF
Страх и ненависть в исходном коде
Почему Mojolicious?
plwww (24.03) MEPHI (PHDays)
Юрий Гольцев - Сервис PLWWW
Что нового в PHP-5.3
Perl: Symbol table
Perl 5.10 и 5.12
PHP basic
Страх и ненависть в исходном коде

What's hot (17)

PDF
Примеры решения типичных задач за рамками ядра Yii2
PPTX
Selenium: приемы работы
PPTX
введение в Laravel 5
PDF
YiiConf: Миграции и инсталляции
PDF
Cобачники против кинофобов
PDF
Perl – жив?!
PPTX
I tmozg js_school_jquery
PPT
Общая архитектура Yii2
PPTX
Yii 2. Что нового?
PDF
Миша Рудрастых: Введение в HTTP API WordPress
PDF
YiiConf 2012 - Alexander Makarov - Yii2, что нового
PPT
Collider
PDF
Erlang tasty & useful stuff
PPT
Yserver
PDF
Продвинутое использование ActiveRecord в Yii2
PPTX
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
PPT
1f5694b92ab2c96e2038b33a8b0ceb7d
Примеры решения типичных задач за рамками ядра Yii2
Selenium: приемы работы
введение в Laravel 5
YiiConf: Миграции и инсталляции
Cобачники против кинофобов
Perl – жив?!
I tmozg js_school_jquery
Общая архитектура Yii2
Yii 2. Что нового?
Миша Рудрастых: Введение в HTTP API WordPress
YiiConf 2012 - Alexander Makarov - Yii2, что нового
Collider
Erlang tasty & useful stuff
Yserver
Продвинутое использование ActiveRecord в Yii2
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
1f5694b92ab2c96e2038b33a8b0ceb7d
Ad

Similar to Алексей Плеханов: 25 причин попробовать Laravel (20)

PDF
Laravel 4 fwdays
PDF
UWDC 2013, Yii2
PPT
PHP Tricks
PDF
Scala On Rest
PDF
Behat в PHP с использованием Behat и Mink
PPT
Yii development
PPT
Подробная презентация JavaScript 6 в 1
PPT
Подробная презентация JavaScript 6 в 1
PPTX
Nginx.pm
PPTX
Зачем нужна Scala?
PPTX
Laravel framework for beginners in php.pptx
PPT
Easy authcache 2 кеширование для pro родионов игорь
PPT
Easy authcache 2 кэширование для pro. Родионов Игорь
PPTX
PHP 5.4: Что нового?
PDF
DevConf 2012 - Yii, его разработка и Yii2
PDF
Александр Сычев "Разделяй и властвуй: CQRS в iOS"
PDF
Разработка на Perl под Raspberry PI
PPTX
Особенности совместной работы Ruby и Oracle
PPTX
Selenide puzzlers @ devclub.eu
PPT
Юрий Гольцев - Сервис Collider
Laravel 4 fwdays
UWDC 2013, Yii2
PHP Tricks
Scala On Rest
Behat в PHP с использованием Behat и Mink
Yii development
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1
Nginx.pm
Зачем нужна Scala?
Laravel framework for beginners in php.pptx
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2 кэширование для pro. Родионов Игорь
PHP 5.4: Что нового?
DevConf 2012 - Yii, его разработка и Yii2
Александр Сычев "Разделяй и властвуй: CQRS в iOS"
Разработка на Perl под Raspberry PI
Особенности совместной работы Ruby и Oracle
Selenide puzzlers @ devclub.eu
Юрий Гольцев - Сервис Collider
Ad

More from Oleg Poludnenko (12)

PPTX
Дмитрий Красун: Сегодня вы уйдете с новым представлением о REST
PDF
Александр Трищенко: PHP 7 Evolution
PPTX
Иван Стеценко: ЯП Zephir. Панацея или лечение?
PPTX
Александр Трищенко: Phalcon framework
PDF
Алексей Иванкин: Highload + PHP
PPTX
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
PPTX
Алексей Рыстенко: Highload и микросервисы
PPTX
Алексей Плеханов: Новинки Laravel 5
PDF
Макс Волошин: Php + shell = ♥
PPTX
Дмитрий Тарасов: Google App Engine & PHP SDK
PPTX
Алексей Рыстенко: Continuous Integration
PPTX
Илья Андриенко: Вёрстка в проекте глазами “неверстальщика”
Дмитрий Красун: Сегодня вы уйдете с новым представлением о REST
Александр Трищенко: PHP 7 Evolution
Иван Стеценко: ЯП Zephir. Панацея или лечение?
Александр Трищенко: Phalcon framework
Алексей Иванкин: Highload + PHP
Антон Довгоброд: Highload и очереди задач на примере PHP + Gearman + Yii2
Алексей Рыстенко: Highload и микросервисы
Алексей Плеханов: Новинки Laravel 5
Макс Волошин: Php + shell = ♥
Дмитрий Тарасов: Google App Engine & PHP SDK
Алексей Рыстенко: Continuous Integration
Илья Андриенко: Вёрстка в проекте глазами “неверстальщика”

Алексей Плеханов: 25 причин попробовать Laravel