SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
25 причин
попробовать
Laravel
$speaker = ‘Алексей Плеханов’;
Красноречивые запросы*
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

Mais conteúdo relacionado

Mais procurados

Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Примеры решения типичных задач за рамками ядра Yii2
Примеры решения типичных задач за рамками ядра Yii2Paul Klimov
 
Selenium: приемы работы
Selenium: приемы работыSelenium: приемы работы
Selenium: приемы работыPaul Stashevsky
 
YiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииYiiConf: Миграции и инсталляции
YiiConf: Миграции и инсталляцииPaul Klimov
 
Cобачники против кинофобов
Cобачники против кинофобовCобачники против кинофобов
Cобачники против кинофобовLidiya Myalkina
 
I tmozg js_school_jquery
I tmozg js_school_jqueryI tmozg js_school_jquery
I tmozg js_school_jqueryITmozg
 
Общая архитектура Yii2
Общая архитектура Yii2Общая архитектура Yii2
Общая архитектура Yii2Paul Klimov
 
Yii 2. Что нового?
Yii 2. Что нового?Yii 2. Что нового?
Yii 2. Что нового?yiiconf
 
Миша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressМиша Рудрастых: Введение в HTTP API WordPress
Миша Рудрастых: Введение в HTTP API WordPressRuslan Begaliev
 
YiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоYiiConf 2012 - Alexander Makarov - Yii2, что нового
YiiConf 2012 - Alexander Makarov - Yii2, что новогоAlexander Makarov
 
Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Продвинутое использование ActiveRecord в Yii2
Продвинутое использование ActiveRecord в Yii2Paul Klimov
 
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...
Динамический код: модифицируем таблицу символов во время выполнения. Елена Ши...Moscow.pm
 
1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7d1f5694b92ab2c96e2038b33a8b0ceb7d
1f5694b92ab2c96e2038b33a8b0ceb7dDarkByte2
 

Mais procurados (17)

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

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

PHP Tricks
PHP TricksPHP Tricks
PHP TricksBlackFan
 
Behat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и MinkBehat в PHP с использованием Behat и Mink
Behat в PHP с использованием Behat и Minktyomo4ka
 
Yii development
Yii developmentYii development
Yii developmentMageCloud
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Подробная презентация JavaScript 6 в 1
Подробная презентация JavaScript 6 в 1Vasya Petrov
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
Easy authcache 2 кеширование для pro родионов игорь
Easy authcache 2   кеширование для pro родионов игорьEasy authcache 2   кеширование для pro родионов игорь
Easy authcache 2 кеширование для pro родионов игорьdrupalconf
 
Easy authcache 2 кэширование для pro. Родионов Игорь
Easy authcache 2   кэширование для pro. Родионов ИгорьEasy authcache 2   кэширование для pro. Родионов Игорь
Easy authcache 2 кэширование для pro. Родионов ИгорьPVasili
 
PHP 5.4: Что нового?
PHP 5.4: Что нового?PHP 5.4: Что нового?
PHP 5.4: Что нового?phpdevby
 
DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2DevConf 2012 - Yii, его разработка и Yii2
DevConf 2012 - Yii, его разработка и Yii2Alexander Makarov
 
Александр Сычев "Разделяй и властвуй: CQRS в iOS"
Александр Сычев "Разделяй и властвуй: CQRS в iOS"Александр Сычев "Разделяй и властвуй: CQRS в iOS"
Александр Сычев "Разделяй и властвуй: CQRS в iOS"IT Event
 
Разработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIРазработка на Perl под Raspberry PI
Разработка на Perl под Raspberry PIIlya Chesnokov
 
Особенности совместной работы Ruby и Oracle
Особенности совместной работы Ruby и OracleОсобенности совместной работы Ruby и Oracle
Особенности совместной работы Ruby и OracleNikita Shilnikov
 
Selenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euSelenide puzzlers @ devclub.eu
Selenide puzzlers @ devclub.euAndrei Solntsev
 
Юрий Гольцев - Сервис Collider
Юрий Гольцев - Сервис ColliderЮрий Гольцев - Сервис Collider
Юрий Гольцев - Сервис ColliderPositive Hack Days
 
Интеграция Яндекс Сервер
Интеграция Яндекс СерверИнтеграция Яндекс Сервер
Интеграция Яндекс СерверPVasili
 

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

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

Mais de Oleg Poludnenko

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

Mais de Oleg Poludnenko (12)

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

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