Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

Laravel for Dummies

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Prochain SlideShare
Hello Laravel 5!
Hello Laravel 5!
Chargement dans…3
×

Consultez-les par la suite

1 sur 40 Publicité

Laravel for Dummies

Télécharger pour lire hors ligne

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.

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.

Publicité
Publicité

Plus De Contenu Connexe

Similaire à Laravel for Dummies (20)

Publicité

Laravel for Dummies

  1. 1. LaravelFOR DUMMIES
  2. 2. 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
  3. 3. Keretrendszerek Mire jó? Leegyszerűsíti és felgyorsítja
 a fejlesztő munkáját. Melyik a legjobb? Erre nincs jó válasz, szubjektív döntés alapján.
  4. 4. 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
  5. 5. A Laravel története
  6. 6. Taylor Otwell • 27 éves fejlesztő, Arkansasból • A PHP előtt .NET-tel foglalkozott • Jelenleg a UserScapenél dolgozik
 http://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
  7. 7. 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ó.
  8. 8. 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
  9. 9. A laraveli út CodeIgniter Kohana FuelPHP Laravel 3 Laravel 4 Symfony 2
  10. 10. • symfony/console • symfony/http-foundation Symfony komponensek Laravel 3
  11. 11. 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
  12. 12. Egyéb komponensek • classpreloader/classpreloader • doctrine/dbal • ircmaxell/password-compat • #lp/whoops • monolog/monolog • nesbot/carbon • patchwork/utf8 • predis/predis • swiftmailer/swiftmailer Laravel 4
  13. 13. A Laravel használatban
  14. 14. Egy Laravel projekt • app • commands • config • controllers • database • lang • models • start • storage • test ! • views • filters.php • routes.php
 • bootstrap • public • vendor
  15. 15. 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.
  16. 16. 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!
  17. 17. 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 simple 1. 2. 3. 4.
  18. 18. A route és RESTful Route::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.
  19. 19. 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!'; });
  20. 20. Modellek
  21. 21. Query Builder • Sokoldalú, PDO (PHP Data Objects) alapú adatbázis absztrakciós model • Láncolható objektum metódusok vagy nyers SQL • Alternatívák • ZendDbSql • 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 ));
  22. 22. 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: • ZendDbTableGateway • 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();
  23. 23. 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
  24. 24. 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 IlluminateDatabaseMigrationsMigration; ! 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'); ! } ! }
  25. 25. View és a Blade Route::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')
  26. 26. • 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 IlluminateConsoleCommand; use SymfonyComponentConsoleInputInputOption; use SymfonyComponentConsoleInputInputArgument; ! 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
  27. 27. Artisan parancsok
  28. 28. Egyéb érdekességek
  29. 29. Authentikáció if (Auth::attempt(array('email' => $email, 'password' => $password))) { return Redirect::to('dashboard'); } ! if (Auth::check()) {...}
  30. 30. Levélküldés Mail::send( ! array(‘html.view’, ‘text.view’), $data, ! function($message) ! { !$message->from('us@example.com', 'Laravel'); !->to('foo@example.com', 'John Smith') !->subject('Hello levél!'); ! } );
  31. 31. Ű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() }}
  32. 32. 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');
  33. 33. 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
  34. 34. A jövő
  35. 35. Mérföldkövek 4.0% % % 2013. május 4.1% % % 2013. november 4.2% % % 2014. május 4.3% % % 2014. november
  36. 36. • 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
  37. 37. • Ú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
  38. 38. Hasznos könyvek a kezdéshez Dayle Rees:
 Code Bright
 
 Chris Fidao: 
 Implementing
 Laravel
 Chuck Heinzelman:
 Getting Stu&
 Done With
 Laravel 4 Christopher
 Pitt:
 Laravel 4
 Cookbook Je!rey Way:
 Laravel Testing
 Decoded 
 Taylor Otwell:
 From Apprentice
 to Artisan
  39. 39. 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
  40. 40. Kérdés? Twitter: @terdelyi Email: laravel@terdelyi.com LinkedIn: http://hu.linkedin.com/in/terdelyi ! Ez a prezentáció innen letölthető: http://www.slideshare.net/terdelyi

×