PHP Frameworks, Libraries & Tools - BarCamp RheinMain 2013
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

PHP Frameworks, Libraries & Tools - BarCamp RheinMain 2013

on

  • 4,372 views

 

Statistics

Views

Total Views
4,372
Views on SlideShare
4,372
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

PHP Frameworks, Libraries & Tools - BarCamp RheinMain 2013 Presentation Transcript

  • 1. PHP Frameworks, Libraries & Tools BarCamp Rhein Main 2013 Lukas Rosenstock
  • 2. Overview ● PHP 5.3: Namespaces, Autoloading and PSR-0 ● Composer & Packagist Dependency Manager ● Silex Microframework & symfony components ● Twig Template Engine ● Guzzle HTTP Library ● Doctrine Object-Relational-Mapper
  • 3. PHP 5.3 ● Namespace declaration: – – ● namespace LukasRosenstockEvents; class BarCamp { } Use classes: – – or – use LukasRosenstockEventsBarCamp; – ● $bcrm13 = new LukasRosenstockEventsBarCamp; $bcrm13 = new BarCamp; PSR0 Guideline: namespace = path – ● /LukasRosenstock/Events/BarCamp.php Autoloading → magic 'require' when needed
  • 4. Composer & Packagist ● Per-project dependency management for frameworks, libraries etc. – ● Command-line tool composer.phar – ● Dependencies are not included in project repository composer install JSON configuration files composer.json for each package – – ● Public package names → http://packagist.org/ Custom repositories and downloads http://getcomposer.org/
  • 5. Silex Microframework ● Microframework = single PHP file for multiple URL patterns – – ● Good for RESTful APIs Requires URL rewriting in webserver Implementation with closures – – $app->get('/event/{id}', function($id) { return 'You have requested event '.$id; }); – $app->post('/event/{id}', function($id, Request $r) { return 'Event updated with '.$r->getContent(); }); – ● $app = new SilexApplication; $app->run(); http://silex.sensiolabs.org/
  • 6. Twig Template Engine ● Separation logic and view ● Frontend developers should not write PHP – ● Twig has own syntax for conditions, loops etc. Template: – – ● <h1>Event {{name}}</h1> {% if is_today %}<p>Happening today.</p>{% endif %} PHP Code: – – ● $twig = new Twig_Environment(new Twig_Loader_Filesystem('/views')); Return $twig->render('event.twig.html', array('name' => $event->getName(), 'is_today' => $event>getDate()==$now); http://twig.sensiolabs.org/
  • 7. Guzzle HTTP Library ● OOP abstraction layer for libcurl ● Extendable with plugins ● Service definitions for webservice API clients – ● Amazon WebServices PHP SDK Example: – – $client->setDefaultHeaders(array('Authorization' => 'Bearer '.$accessToken)); – $response = $client->get('/event/bcrm13')->send(); – ● $client = new GuzzleHttpClient('http://api.example.com/'); $eventData = $response->json(); http://guzzlephp.org/
  • 8. Doctrine Object-Relational-Mapper ● 1 SQL table = 1 PHP class – ● Mapping of fields and relations defined with annotations (comments) or in external configuration files Sample fields: – – /** @Column(type="string") **/ private $name; – ● /** @Id @Column(type="integer") **/ private $id; /** @OneToOne(targetEntity="User") **/ private $organizer; Creating Entity: – $event = new LukasRosenstockEventsBarCamp; – $em->persist($event); // em = EntityManager – $em->flush();
  • 9. Doctrine Object-Relational-Mapper ● Fetching Entity: – ● $event = $em>getRepository('LukasRosenstockEventsBarCamp')>findOneById(1); Modifying Entity: – – $event->setOrganizer($user); – ● $user = new LukasRosenstockEventsOrganizer; $em->flush(); http://www.doctrine-project.org/
  • 10. Thank you! Questions?!