Алексей Плеханов: Новинки laravel 5

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

Upload: oleg-poludnenko

Post on 12-Jul-2015

663 views

Category:

Technology


0 download

TRANSCRIPT

Laravel 5

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

Новая структура папок

Environments

./.env

APP_ENV = local

DB_USER = root

DB_PASSWORD = secret

MAILGUN_API_KEY = d1fd1f13h6731gf32

getenv(‘DB_USER’)

vlucas/phpdotenv

Dependency Injection

public function __construct(MyDependency $thing) {

$this->thing = $thing;

}

Dependency Injection

public function __construct(MyDependency $thing) {

$this->thing = $thing;

}

$thing = App::make(‘MyDependency’);

Инъекция в методы

public function index(IosNotifier $notifier) {

$notifier->notify($deviceToken, $message);

}

Форм-запросы

public function store(StoreRequest $request) {

User::create([

‘email’ => $request->email,

‘name’ => $request->name

]);

}

Форм-запросы

class StoreRequest extends Request {

public function rules() {

return [

'email' => 'required|email',

‘name’ => ‘required|min:5’

];}

public function authorize() {

return Auth::user()->isAdmin();

}

}

Форм-запросы

$validator = Validator::make($rules, $data);

if ($validator->fails()) {

...

}

return Redirect::back();

Разные файловые системы

File::get('path');

File::put('path', 'contents');

Local S3 Rackspace

league/flysystem

Разные файловые системы

return [

‘default’ => ‘s3’, // or rackspace

‘disks’ => [

‘s3’ => [

‘driver’ => ‘s3’,

‘key’ => ‘your-key’,

‘secret’ => ‘your-secret’,

‘bucket’ => ‘your-bucket’

]]];

./config/filesystems.php

Middleware

Request Start

CSRF Middleware

Controller

Request Stop

Auth Middleware

...

Middleware

class CsrfMiddleware implements Middleware {

public function handle($request, Closure $next) {

if (in_array($request->method(), ['HEAD', 'GET', 'OPTIONS'])) ||

$this->tokensMatch($request)) {

return $this->addCookieToResponse($request, $next($request));

}

throw new TokenMismatchException;

}

}

Аннотации (роуты)

/**

* @Get(“dogs”)

*/

public function index() {

return view(‘dogs.index’);

}

php artisan route:scan

Аннотации (роуты)

/**

* @Resource(“users”, only={“index”, “show”})

* @Middleware(“auth”, except={“index”})

*/

class UsersController {

public function index() {...}

public function show() {...}

}

php artisan route:scan

Аннотации (события)

class EmailNotifier {

/**

* @Hears(‘user.upgraded’)

*/

public function whenUserUpgraded() {

...

}

}

php artisan event:scan

Elixir (gulp.js)

var elixir = require(‘laravel-elixir’);

elixir(function(mix) {

mix.less("bootstrap.less")

.coffee()

.phpUnit()

.routes()

.events();

});

Elixir (gulp.js)

• coffee

• less / sass

• event-scan

• route-scan

• scripts / styles

• phpunit

• watch

Scheduler

* * * * * php /path/to/project/artisan schedule:run

Scheduler

$schedule->command('cache:clear')

->hourly()

->sendOutputTo($filePath)

->emailOutputTo('[email protected]');

* * * * * php /path/to/project/artisan schedule:run

Scheduler

$schedule->call('SomeClass@method')

->dailyAt('10:00');

Scheduler

$schedule->terminal('gulp task')

->fridays()

->when(function(){

return true;

});

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

aplekhanov

@

dataart.com

vk.com/pug.ukraine