Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
25 причин
попробовать
Laravel
$speaker = ‘Алексей Плеханов’;
Красноречивые запросы*
class Order extends Eloquent {}
* - Eloquent — название реализации Active Record в Laravel, а также...
Красноречивые запросы*
class Order extends Eloquent {}
* - Eloquent — название реализации Active Record в Laravel, а также...
Красноречивые запросы*
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красно...
Красноречивые запросы*
* - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красно...
Гибкий роутинг
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 fun...
Ресурс контроллеры
Route::resource('users', 'UserController');
Ресурс контроллеры
Route::resource('users', 'UserController');
● GET /users
● GET /users/:order
● GET /users/create
● GET ...
Ресурс контроллеры
Relations
class Task extends Eloquent {
public function user() {
return $this->belongsTo('User');
}
}
class User extends E...
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::mak...
Blade шаблонизатор
@if ($orders->count())
<ul>
@foreach($orders as $order)
<li>{{{ $order->title }}}</li>
@endforeach
</ul...
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’]);
});
Ev...
Pagination
User::paginate(15);
<div class="container">
<?php foreach ($users as $user): ?>
<?php echo $user->name; ?>
<?ph...
Очереди
Queue::push('SignUpService', compact('user'));
Amazon SQS Beanstalkd Iron.io
Простая валидация
$order = [
'title' => 'Wii U',
'description' => 'Game console from Nintendo'
];
$rules = [
'title' => 'r...
Tinker
php artisan tinker
* read-eval-print-loop
Миграции
public function up() {
Schema::create('faqs', function(Blueprint $table) {
$table->integer('id', true);
$table->t...
Генераторы
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 = 'com...
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="mailto:test@ex.
cc"...
HTML хелперы
{{ Html::mailto('test@ex.cc') }}
{{ Html::script('js/app.js') }}
{{ Html::style('css/body.css') }}
{{ Form::o...
Связь модели с формой
{{ Form::model($order) }}
<div>
{{ Form::label('title', 'Title:') }}
{{ Form::text('title') }}
</div...
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')->...
Environments
$env = $app->detectEnvironment([
'local' => ['your-machine-name'],
]);
Environments
$env = $app->detectEnvironment([
'local' => ['your-machine-name'],
]);
$env = $app->detectEnvironment(functio...
Простые конфиги
<?php // app/config/development/billing.php
return [
'api_key' =>'Dad2#@@d'
];
Config::get(‘billing.api_ke...
Обучаемость
https://leanpub.com/codebright https://laracasts.com/
https://leanpub.com/laravel
Спасибо за внимание!
aplekhanov
@
dataart.com
vk.com/pugdnepr
Алексей Плеханов: 25 причин попробовать Laravel
Upcoming SlideShare
Loading in …5
×

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

1,482 views

Published on

Доклад с PUG#1 https://www.facebook.com/events/1505404039679797/

Мой доклад посвящен популярному фреймворку 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

Published in: Software
  • Be the first to comment

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

  1. 1. 25 причин попробовать Laravel $speaker = ‘Алексей Плеханов’;
  2. 2. Красноречивые запросы* class Order extends Eloquent {} * - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый.
  3. 3. Красноречивые запросы* class Order extends Eloquent {} * - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый. Order::all();
  4. 4. Красноречивые запросы* * - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый. Order::orderBy('date','desc')->get();
  5. 5. Красноречивые запросы* * - Eloquent — название реализации Active Record в Laravel, а также в переводе с английского красноречивый. $order = new Order; $order->title = 'Xbox One'; $order->save();
  6. 6. Гибкий роутинг Route::get('orders', function() { return View::make('orders.index') ->with('orders', Order::all()); });
  7. 7. Гибкий роутинг Route::get('orders','OrdersController@index');
  8. 8. RESTful-контроллеры Route::controller('users', 'UserController');
  9. 9. 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’); } }
  10. 10. Ресурс контроллеры Route::resource('users', 'UserController');
  11. 11. Ресурс контроллеры 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
  12. 12. Ресурс контроллеры
  13. 13. Relations class Task extends Eloquent { public function user() { return $this->belongsTo('User'); } } class User extends Eloquent { public function tasks() { return $this->hasMany('Task'); } }
  14. 14. Relations $user = User::find(1); $tasks = $user->tasks;
  15. 15. Relations $task = Task::find(1); $user = $task->user;
  16. 16. Кеш запросов в базу Question::remember(60)->get();
  17. 17. Композиторы шаблонов View::composer('layouts.nav', function($view) { $view->with('tags', ['tag1', 'tag2']); });
  18. 18. Простая авторизация $user = [ 'email' => 'email', 'password' => 'password' ]; if (Auth::attempt($user)) { return View::make(‘dashboard’); }
  19. 19. Blade шаблонизатор @if ($orders->count()) <ul> @foreach($orders as $order) <li>{{{ $order->title }}}</li> @endforeach </ul> @endif
  20. 20. SSH SSH::into('production')->run([ 'cd /var/www', 'git pull origin master' ]); * Laravel >= 4.1.0
  21. 21. События Event::listen('user.signUp', function() { $user = new User([‘email’ => ‘ap@ex.cc’, ‘password’ => ‘12345’]); });
  22. 22. События Event::listen('user.signUp', function() { $user = new User([‘email’ => ‘ap@ex.cc’, ‘password’ => ‘12345’]); }); Event::listen('user.signUp', 'UserEventHandler');
  23. 23. Pagination User::paginate(15); <div class="container"> <?php foreach ($users as $user): ?> <?php echo $user->name; ?> <?php endforeach; ?> </div> <?php echo $users->links(); ?>
  24. 24. Очереди Queue::push('SignUpService', compact('user')); Amazon SQS Beanstalkd Iron.io
  25. 25. Простая валидация $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()); // массив ошибок }
  26. 26. Tinker php artisan tinker * read-eval-print-loop
  27. 27. Миграции 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'); }
  28. 28. Генераторы php artisan generate:migration create_users_table -- fields="username:string, password:string" "way/generators"
  29. 29. Консольные команды php artisan command:make MyCustomCommand class MyCustomCommand extends Command { protected $name = 'command:name'; protected $description = 'Command description.'; public function fire() {} }
  30. 30. HTML хелперы Html::mailto('test@ex.cc') Html::script('js/app.js') Html::style('css/body.css')
  31. 31. HTML хелперы Html::mailto('test@ex.cc') Html::script('js/app.js') Html::style('css/body.css') <a href="mailto:test@ex. cc">test@ex.cc</a>
  32. 32. 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() }}
  33. 33. Связь модели с формой {{ Form::model($order) }} <div> {{ Form::label('title', 'Title:') }} {{ Form::text('title') }} </div> <div> {{ Form::label('description', 'Description:') }} {{ Form::textarea('description') }} </div> {{ Form::close() }}
  34. 34. IoC public function __construct(MyDependency $thing) { $this->thing = $thing; }
  35. 35. IoC public function __construct(MyDependency $thing) { $this->thing = $thing; } $myClass = App::make('MyClass');
  36. 36. Фасады Auth::check() Auth::attempt() Cache::put() Session::put() Mail::send() Queue::push()
  37. 37. Фасады Auth::check() Auth::attempt() Cache::get() Session::put() Mail::send() Queue::push() $value = $app->make('cache')->get('key');
  38. 38. Environments $env = $app->detectEnvironment([ 'local' => ['your-machine-name'], ]);
  39. 39. Environments $env = $app->detectEnvironment([ 'local' => ['your-machine-name'], ]); $env = $app->detectEnvironment(function() { return getenv('ENV_NAME') ?: 'local'; });
  40. 40. Простые конфиги <?php // app/config/development/billing.php return [ 'api_key' =>'Dad2#@@d' ]; Config::get(‘billing.api_key’)
  41. 41. Обучаемость https://leanpub.com/codebright https://laracasts.com/ https://leanpub.com/laravel
  42. 42. Спасибо за внимание! aplekhanov @ dataart.com vk.com/pugdnepr

×