Top Banner
Laravel FOR DUMMIES
40

Laravel for Dummies

Jul 05, 2015

Download

Technology

Tamás Erdélyi

Rövid történelmi áttekintés az idén májusban verziószámot lépett Laravel PHP keretrendszerről, felépítéséről és előnyeiről is. Ezen kívül szóba kerültek még a 2013. november végén érkező 4.1-es frissítés újdonságai is.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Laravel for Dummies

LaravelFOR DUMMIES

Page 2: Laravel for Dummies

Ki vagyok én?

• Webfejlesztő (back-end, PHP)

• 11 éve foglalkozom weboldalakkal

• Korábban CodeIgniter fan

• 2013. február óta a netpeople.hu csapatát erősítem

Page 3: Laravel for Dummies

Keretrendszerek

Mire jó?

Leegyszerűsíti és felgyorsítjaa fejlesztő munkáját.

Melyik a legjobb?

Erre nincs jó válasz, szubjektív döntés alapján.

Page 4: Laravel for Dummies

A PHP reneszánszát éli• Bővebb lehetőségek PHP 5.3-tól felfele

(pl. namespaces, closures, traits)

• Jobb eszközök • Composer

• CLI - Command Line Interface

• Előremutató szabványok (PSR)

• Hatékonyabb szemlélet • OOP - Object-Oriented Programming

• TDD - Test Driven Development

• DI - Dependency Injection

Page 5: Laravel for Dummies

A Laravel története

Page 6: Laravel for Dummies

Taylor Otwell• 27 éves fejlesztő, Arkansasból

• A PHP előtt .NET-tel foglalkozott

• Jelenleg a UserScapenél dolgozikhttp://userscape.com

• Tipikus one-man-army, lelkes segítőkkel a háta mögött:

Dayle Rees, Shawn McCool, Je!rey Way, Jason Lewis, Ben Corlett, Franz Liedke, Dries Vints, Mior Muhammad Zaki és Phil Sturgeon

• Twitter: @taylorotwell

Page 7: Laravel for Dummies

Előzmények• 2010-2011 között járunk.

• A CodeIgniter 2 képtelen volt felzárkózni, az EllisLab mostohagyermeke lett.

• A többi framework lassan adaptálta a PHP 5.3 újdonságait, nem tudtak elszakadni (PHP 4-ig kompatibillisek).

• Taylor célkitűzései: olyan keretrendszer, amit a fejlesztő szívesen használ, élvezet vele fejleszteni, tiszta és olvasható kód, alapos dokumentáció, gyorsan megtanulható.

Page 8: Laravel for Dummies

Két év, négy verziószám

Laravel# # # 2011. június

Laravel 2# # 2011. november

Laravel 3# # 2012. febuár

Laravel 4# # 2013. május

Page 9: Laravel for Dummies

A laraveli útCodeIgniter

Kohana

FuelPHP

Laravel 3 Laravel 4

Symfony 2

Page 10: Laravel for Dummies

• symfony/console

• symfony/http-foundation

Symfony komponensekLaravel 3

Page 11: Laravel for Dummies

Symfony komponensek

• symfony/browser-kit

• symfony/console

• symfony/css-selector

• symfony/debug

• symfony/dom-crawler

• symfony/event-dispatcher

• symfony/#nder

• symfony/http-foundation

• symfony/http-kernel

• symfony/process

• symfony/routing

• smyfony/translation

Laravel 4

Page 12: Laravel for Dummies

Egyéb komponensek

• classpreloader/classpreloader

• doctrine/dbal

• ircmaxell/password-compat

• #lp/whoops

• monolog/monolog

• nesbot/carbon

• patchwork/utf8

• predis/predis

• swiftmailer/swiftmailer

Laravel 4

Page 13: Laravel for Dummies

A Laravel használatban

Page 14: Laravel for Dummies

Egy Laravel projekt• app

• commands • config • controllers • database • lang • models • start • storage • test

!• views • filters.php • routes.php

• bootstrap • public • vendor

Page 15: Laravel for Dummies

Expresszív kód

$articles = Article::where('status', '=', 1) ->orderBy('date', 'desc') ->skip(10) ->take(5) ->get();

!Redirect::to('login') ->with('message', 'Sikertelen bejelentkezés!’);

!Cookie::forever('remember_me', true);

Anélkül, hogy tudnánk pontosan mit csinál, pontosan tudjuk mit csinál.

Page 16: Laravel for Dummies

Statikus interfész az alkalmazás IoC (Inversion of Control) konténerében elhelyezkedő osztályaihoz.

$filesystem = new Filesystem(...)

$fileloader = new Fileloader($filesystem);

$config = new Config($fileloader, 'dev');

$appName = $config->get('application.name');

helyett

$appName = Config::get('application.name');

Nem statikus - Facade!

Page 17: Laravel for Dummies

Route::get('hello-vilag', function() {

return 'Helló világ!';

});

!Route::get('hello/{name}', function($name) {

return 'Helló' . $name;

})->where('name', '[a-zA-Z]+');

!Route::post('form', function() {

return 'Posttal küldött adatok:' . print_r($_POST, true);

});

!Route::get('hirek', 'NewsController@showNews');

Route as simple1.

2.

3.

4.

Page 18: Laravel for Dummies

A route és RESTfulRoute::controller('hirek', 'NewsController');

class NewsController

{

public function getIndex() {...}

public function getArticle() {...}

public function postComment() {...}

}

!!Route::resource('hirek', 'NewsController');

class NewsController

{

public function index() {...} // GET /hirek -> NewsController::index()

public function create() {...} // GET /hirek/uj -> NewsController::create()

public function store() {...} // POST /hirek -> NewsController::store()

public function show() {...} // GET /hirek/{id} -> NewsController::show($id)

public function edit() {...} // GET /hirek/{id}/szerk -> NewsController::edit($id)

public function update() {...} // PUT/PATCH /hirek/{id} -> NewsController::update($id)

public function destroy() {...} // DELETE /hirek/{id} -> NewsController::destroy($id)

}

1.

2.

Page 19: Laravel for Dummies

Route nevek és $lterek

1.

2.

Route::get('hirek/{id}'), array('as' => 'article', function(){

return 'Ez egy hír!';

});

URL::route('article', array('id' => 1));

Redirect::route('article', array('id' => 1));

!!Route::filter('auth', function(){

if (Auth::guest()) {

return Redirect::to('bejelentkezes');

}

});

Route::get('admin', array('before' => 'auth', function(){

return 'Be vagy jelentkezve, üdvözlünk az adminfelületen!';

});

Page 20: Laravel for Dummies

Modellek

Page 21: Laravel for Dummies

Query Builder• Sokoldalú, PDO (PHP

Data Objects) alapú adatbázis absztrakciós model

• Láncolható objektum metódusok vagy nyers SQL

• Alternatívák • Zend\Db\Sql

• MDB2 package

$posts = DB::table('posts') ->where('status', '=', 1) ->orderBy('date', 'desc') ->take(5) ->get(); foreach ($posts as $row) { echo $row->title; } !$post = DB::table('posts') ->where('id', '=', 23) ->first(); echo $post->title; !DB::table('posts')->insert(array( 'title' => 'PHP Meetup', 'date' => '2013-11-28', 'status'=> 1 ));

Page 22: Laravel for Dummies

Eloquent ORM• A Query Builder szintaxisára

épül, egy adatbázis tábla sorait objektummá alakítja.

• Erőteljes funkciók: relationships, eager loading, event triggers, accessors / mutators.

• Alternatívák: • Zend\Db\TableGateway

• Doctrine

• Propel

• Redbean

class Posts extends Eloquent { protected $table = 'tabla_neve'; public function summary() { return truncate($this->content); } } !// lekeres $posts = Posts::get(); !// letrehozas $post = new Posts(); $post->title = 'Poszt címe'; $post->date = '2013-06-28'; $post->status = 1; $post->save();

Page 23: Laravel for Dummies

Eloquent: kapcsolatban• Egy-az-egyhez • Egy-a-többhöz • Több-a-többhöz • Polimor#kus

kapcsolatok

class User extends Eloquent { ! public function phone() { return $this->hasOne('Phone'); } !} !User::find(1)->phone; !!MySQL: !select * from users where id = 1 select * from phones where user_id = 1

Page 24: Laravel for Dummies

Scheme Builder és migrációk• Migrations:

verziókezelés adatbázisokhoz.

• Scheme Builder: új táblák létrehozása, meglévők módosítása, feltöltés adatokkal (seeding).

• Migrációk futtatása parancssorból:

php artisan migrate php artisan rollback

// app/database/migrations ! ! /2013_11_28_1901537_posts.php use Illuminate\Database\Migrations\Migration; !class Posts extends Migration { !! public function up() ! { ! ! Schema::create('posts', function($table) ! ! { ! ! $table->increments('id'); ! ! $table->string('string', 150); ! ! $table->text('content'); ! ! $table->date('date'); ! ! }); ! } !! public function down() ! { ! ! Schema::drop('posts'); ! } !}

Page 25: Laravel for Dummies

View és a BladeRoute::get('hirek', function(){ $posts = Posts::all(); return View::make('posts') ->with('pageTitle', 'Bejegyzések') ->with('posts', $posts); });

// app/views/posts.blade.php @include('sections/header') <h1>{{ $pageTitle }}</h1> !@foreach($posts as $post) <h2>{{ $post->title }}</h2> @if ($post->summary()) <p>{{ $post->summary() }}</p> @endif @endforeach !@include('sections/footer')

Page 26: Laravel for Dummies

• A Symfony Console komponensén alapul.

• Az alkalmazásunk karbantartására, menedzselésére írhatunk benne parancssori feladatokat, taskokat, pl. kódgenerálás, adatbázis migrációk, online / o$ine, stb.

• Könnyedén írható új parancs vagy módosítható egy meglévő.

// app/commands/HelloCommand.php use Illuminate\Console\Command; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; !class HelloCommand extends Command { !! protected $name = 'command:hello'; ! protected $description = 'Command description.'; !! public function fire() ! { ! ! echo "Helló világ!\n"; ! } !} !// app/start/artisan.php Artisan::add(new HelloCommand);

Artisan

Page 27: Laravel for Dummies

Artisan parancsok

Page 28: Laravel for Dummies

Egyéb érdekességek

Page 29: Laravel for Dummies

Authentikáció

if (Auth::attempt(array('email' => $email, 'password' => $password))) {

return Redirect::to('dashboard');

}

!if (Auth::check()) {...}

Page 30: Laravel for Dummies

Levélküldés

Mail::send(

! array(‘html.view’, ‘text.view’), $data,

! function($message)

! {

!$message->from('[email protected]', 'Laravel');

!->to('[email protected]', 'John Smith')

!->subject('Hello levél!');

! }

);

Page 31: Laravel for Dummies

Űrlapok

{{ Form::open(array('url' => 'login')) }}

<p>{{ Form::label('username', 'Felhasználónév'); }}<br>

{{ Form::text('username'); }}</p>

<p>{{ Form::label('password', 'Jelszó'); }}<br>

{{ Form::password('password'); }}</p>

<p>{{ Form::label('remember', 'Emlékezz rám'); }}<br>

{{ Form::checkbox('remember', 1); }}</p>

{{ Form::close() }}

Page 32: Laravel for Dummies

Sessions & Cookies

Session::put('key', 'value');

Session::get('key', 'default');

Session::get('key', function() {

return 'default';

});

Session::forget('key');

Session::flash('key', 'value');

!

Cookie::make('name', 'value', $minutes);

Cookie::get('name');

Cookie::forever('name', 'value');

Page 33: Laravel for Dummies

Mi még?• Pagination • Enviroments • Validation • Localization • Cache • Queue • Events

• Unit Testing • IoC (DI) • Errors /

Exceptions • Logging • Brycpt hashing

• Package fejlesztés (Workbench)

• Helperek (array, string, url, stb.)

• Requests • Responses • Fájlműveletek

Page 34: Laravel for Dummies

A jövő

Page 35: Laravel for Dummies

Mérföldkövek

4.0% % % 2013. május

4.1% % % 2013. november

4.2% % % 2014. május

4.3% % % 2014. november

Page 36: Laravel for Dummies

• Polimor$kus Több-Több kapcsolat (Polymorphic Many To Many), több modellhez.

• Remote: integrált Rocketeer package (http://anahkiasen.github.io/rocketeer/) olyan, mint a Capistrano a Ruby-ban, code deploymenthez.

• Eloquent:

• whereHas: pl. egy blognál az összes olyan poszt lekérése, ahol egy adott user már kommentelt

Post::whereHas('comment', function($q) { % % $q->where('user_id', 1); }, '>', 0)->get();});

• hasMany

A Laravel 4.1 újdonságai

Page 37: Laravel for Dummies

• Új Artisan parancsok:

• artisan tail - error log valós időben.

• artisan tinker - valós idejű, interaktív kódtesztelés

• artisan changes - changelog

• Cache: a Cache::section() kibővül egy tag funkcióval, címkézni lehet majd a cache szekciókat.

• Queue: Redis támogatás, priorítás kezelés.

• Sebességoptimalizálás

• A frissítés mindössze ennyi:

composer update

A Laravel 4.1 újdonságai

Page 38: Laravel for Dummies

Hasznos könyvek a kezdéshez

Dayle Rees: Code Bright

Chris Fidao: ImplementingLaravel

Chuck Heinzelman:Getting Stu&Done WithLaravel 4

ChristopherPitt:Laravel 4Cookbook

Je!rey Way:Laravel Testing Decoded

Taylor Otwell:From Apprenticeto Artisan

Page 39: Laravel for Dummies

Hasznos linkek a folyatáshoz

• Dokumentáció:http://laravel.com/docs

• Fórum: http://forums.laravel.io/

• IRC:http://laravel.io/irc

irc.freenode.net:6667#laravel

• Laravel Cheat Sheet:http://cheats.jesse-obrien.ca/

• Laravel hírlevél:http://laravelweekly.com/

• Laracast by Je!rey Way:https://laracasts.com/

9$ / hónap

Page 40: Laravel for Dummies

Kérdés?Twitter: @terdelyi

Email: [email protected]

LinkedIn: http://hu.linkedin.com/in/terdelyi

!Ez a prezentáció innen letölthető: http://www.slideshare.net/terdelyi