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

43
25 причин попробовать Laravel $speaker = ‘Алексей Плеханов’;

Upload: oleg-poludnenko

Post on 14-Jun-2015

792 views

Category:

Software


1 download

DESCRIPTION

Мой доклад посвящен популярному фреймворку Laravel. Я рассказываю про 25 причин, по которым, я считаю, стоит попробовать этот фреймворк, особенно, если раньше Вы не были с ним знакомы. Описаны ORM Eloquent, роутинг в Laravel, работа с основными компонентами, такими как контроллеры, шаблонизатор, авторизация, пагинация, а также более сложные вещи, как Inverse of Control, фасады в Laravel, работа с очередями и консольными командами. Также в докладе освещены другие интересные фичи фреймворка! PHP User Group Ukraine в социальных сетях: https://www.facebook.com/pug.ukraine https://vk.com/pug.ukraine https://www.linkedin.com/groups/PHP-User-Group-Ukraine-6703717

TRANSCRIPT

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

25 причинпопробовать

Laravel

$speaker = ‘Алексей Плеханов’;

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

Красноречивые запросы*

class Order extends Eloquent {}

* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.

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

Красноречивые запросы*

class Order extends Eloquent {}

* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.

Order::all();

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

Красноречивые запросы*

* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.

Order::orderBy('date','desc')->get();

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

Красноречивые запросы*

* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.

$order = new Order;

$order->title = 'Xbox One';

$order->save();

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

Гибкий роутинг

Route::get('orders', function(){ return View::make('orders.index') ->with('orders', Order::all());});

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

Гибкий роутинг

Route::get('orders','OrdersController@index');

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

RESTful-контроллеры

Route::controller('users', 'UserController');

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

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’); }}

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

Ресурс контроллеры

Route::resource('users', 'UserController');

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

Ресурс контроллеры

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

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

Ресурс контроллеры

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

Relations

class Task extends Eloquent { public function user() { return $this->belongsTo('User'); }}

class User extends Eloquent { public function tasks() { return $this->hasMany('Task'); }}

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

Relations

$user = User::find(1);

$tasks = $user->tasks;

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

Relations

$task = Task::find(1);

$user = $task->user;

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

Кеш запросов в базу

Question::remember(60)->get();

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

Композиторы шаблонов

View::composer('layouts.nav', function($view) { $view->with('tags', ['tag1', 'tag2']);

});

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

Простая авторизация

$user = [ 'email' => 'email', 'password' => 'password']; if (Auth::attempt($user)){ return View::make(‘dashboard’);}

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

Blade шаблонизатор

@if ($orders->count()) <ul> @foreach($orders as $order) <li>{{{ $order->title }}}</li> @endforeach </ul>@endif

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

SSH

SSH::into('production')->run([ 'cd /var/www', 'git pull origin master']);

* Laravel >= 4.1.0

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

События

Event::listen('user.signUp', function(){ $user = new User([‘email’ => ‘[email protected]’, ‘password’ => ‘12345’]);});

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

События

Event::listen('user.signUp', function(){ $user = new User([‘email’ => ‘[email protected]’, ‘password’ => ‘12345’]);});

Event::listen('user.signUp', 'UserEventHandler');

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

Pagination

User::paginate(15);

<div class="container"> <?php foreach ($users as $user): ?> <?php echo $user->name; ?> <?php endforeach; ?></div>

<?php echo $users->links(); ?>

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

Очереди

Queue::push('SignUpService', compact('user'));

Amazon SQS Beanstalkd Iron.io

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

Простая валидация

$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()); // массив ошибок

}

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

Tinker

php artisan tinker

* read-eval-print-loop

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

Миграции

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');}

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

Генераторы

php artisan generate:migration create_users_table --fields="username:string, password:string"

"way/generators"

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

Консольные команды

php artisan command:make MyCustomCommand

class MyCustomCommand extends Command { protected $name = 'command:name'; protected $description = 'Command description.';

public function fire() {}}

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

HTML хелперы

Html::mailto('[email protected]')Html::script('js/app.js')

Html::style('css/body.css')

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

HTML хелперы

Html::mailto('[email protected]')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>

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

HTML хелперы

{{ Html::mailto('[email protected]') }}{{ 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() }}

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

Связь модели с формой

{{ Form::model($order) }} <div> {{ Form::label('title', 'Title:') }} {{ Form::text('title') }} </div> <div> {{ Form::label('description', 'Description:') }} {{ Form::textarea('description') }} </div>{{ Form::close() }}

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

IoC

public function __construct(MyDependency $thing) { $this->thing = $thing;}

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

IoC

public function __construct(MyDependency $thing) { $this->thing = $thing;}

$myClass = App::make('MyClass');

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

Фасады

Auth::check()

Auth::attempt()

Cache::put()

Session::put()

Mail::send() Queue::push()

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

Фасады

Auth::check()

Auth::attempt()

Cache::get()

Session::put()

Mail::send() Queue::push()

$value = $app->make('cache')->get('key');

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

Environments

$env = $app->detectEnvironment([ 'local' => ['your-machine-name'],]);

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

Environments

$env = $app->detectEnvironment([ 'local' => ['your-machine-name'],]);

$env = $app->detectEnvironment(function(){ return getenv('ENV_NAME') ?: 'local';});

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

Простые конфиги

<?php // app/config/development/billing.php return [ 'api_key' =>'Dad2#@@d'];

Config::get(‘billing.api_key’)

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

Обучаемость

https://leanpub.com/codebright https://laracasts.com/

https://leanpub.com/laravel

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

Спасибо за внимание!

aplekhanov@

dataart.com

vk.com/pugdnepr