News of the Symfony2 World

Preview:

DESCRIPTION

 

Citation preview

News of the Symfony2 world Fabien Potencier

The Symfony2 Philosophy

Be as easy as possible for newcomers and as flexible as possible for advanced users

Symfony\Components Symfony\Framework

CssSelector

use Symfony\Components\CssSelector\Parser;

Parser::cssToXpath('h4 > a:contains("foo")');

use Symfony\Components\CssSelector\Parser;

$document = new \DOMDocument(); $document->loadHTMLFile('...'); $xpath = new \DOMXPath($document);

$expr = Parser::cssToXpath('a.smart'); $nodes = $xpath->query($expr);

foreach ($nodes as $node) { printf("%s (%s)\n", $node->nodeValue, $node->getAttribute('href')); }

DomCrawler

use Symfony\Components\DomCrawler\Crawler;

$crawler = new Crawler($html);

addContent()

addHtmlContent()

addXmlContent()

addDocument()

addNodeList()

addNodes()

addNode()

add()

filter()

filterXpath()

eq()

reduce()

first() / last()

siblings()

nextAll() / previousAll()

parents() / children()

$link = $crawler->filter("h1 > h2");

$link = $crawler->filter("h1")->eq(1);

isEmpty()

each()

attr()

text()

extract()

$crawler ->filter('a.smart') ->each(function ($node) { print $node->getAttribute('href')."\n"; });

$crawler ->filter('a') ->extract(array('_text', 'href')) ;

selectLink() / selectButton()

$crawler->selectLink("Greet Lucas");

$crawler->selectButton('submit');

$crawler->filter('a:contains("Greet")')->eq(1);

$link = $crawler ->selectLink("Greet Lucas") ->link();

$form = $crawler->filter( 'button:contains("submit")')->form();

// fill an input field $form['name'] = 'Lucas';

// select an option or a radio $form['country']->select('France');

// tick a checkbox $form['like_symfony']->tick();

// upload a file $form['photo']->upload('/path/to/lucas.jpg');

$form->getValues() / $form->getFiles()

array('article[title]' => 'Title', ...)

$form->getPhpValues() / $form->getPhpFiles()

array('article' => array('title' => 'Title', ...))

Browser

http://www.github.com/fabpot/Goutte

Finder

use Symfony\Components\Finder\Finder;

$finder = new Finder(); $finder ->files() ->in(__DIR__) ->...() ->sortByName() ;

$finder ->name('*.php') ->depth('<= 1') ->date('>= yesterday') ->size('<= 1K') ->filter(function (\SplFileInfo $file) { return strlen($file->getBasename()) < 9; }) ;

foreach ($finder as $file) { print $file->getRealpath()."\n"; }

$files = iterator_to_array($finder);

$count = iterator_count($finder);

use Symfony\Components\Finder\Finder;

$s3 = new \Zend_Service_Amazon_S3($key, $sct); $s3->registerStreamWrapper("s3");

$finder = new Finder(); $finder ->name('photos*') ->size('< 100K') ->date('since 1 hour ago') ->in('s3://bucket-name') ;

HttpKernel: The framework construction kit

namespace Symfony\Components\HttpKernel;

interface HttpKernelInterface { const MASTER_REQUEST = 1; const FORWARDED_REQUEST = 2; const EMBEDDED_REQUEST = 3;

public function handle( Request $request = null, $type = self::MASTER_REQUEST, $raw = false);

public function getRequest(); }

Testing

Profiling

and …

What’s next?

Questions?

Sensio S.A. 92-98, boulevard Victor Hugo

92 115 Clichy Cedex FRANCE

Tél. : +33 1 40 99 80 80

Contact Fabien Potencier

fabien.potencier at sensio.com

http://www.sensiolabs.com/

http://www.symfony-project.org/

http://fabien.potencier.org/