merged 2.0

This commit is contained in:
Fabien Potencier 2012-04-25 12:14:55 +02:00
commit 76ef8da030
14 changed files with 54 additions and 23 deletions

View File

@ -17,7 +17,6 @@
], ],
"require": { "require": {
"php": ">=5.3.2", "php": ">=5.3.2",
"doctrine/common": "2.2.*",
"twig/twig": ">=1.1,<2.0-dev" "twig/twig": ">=1.1,<2.0-dev"
}, },
"replace": { "replace": {

View File

@ -17,6 +17,7 @@ use Symfony\Component\DependencyInjection\DefinitionDecorator;
use Symfony\Component\DependencyInjection\Reference; use Symfony\Component\DependencyInjection\Reference;
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\Config\Resource\FileResource;
use Symfony\Component\Config\Resource\DirectoryResource;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\HttpKernel\DependencyInjection\Extension;
use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\FileLocator;
@ -544,6 +545,9 @@ class FrameworkExtension extends Extension
// Register translation resources // Register translation resources
if ($dirs) { if ($dirs) {
foreach ($dirs as $dir) {
$container->addResource(new DirectoryResource($dir));
}
$finder = Finder::create() $finder = Finder::create()
->files() ->files()
->filter(function (\SplFileInfo $file) { ->filter(function (\SplFileInfo $file) {
@ -551,6 +555,7 @@ class FrameworkExtension extends Extension
}) })
->in($dirs) ->in($dirs)
; ;
foreach ($finder as $file) { foreach ($finder as $file) {
// filename is domain.locale.format // filename is domain.locale.format
list($domain, $locale, $format) = explode('.', $file->getBasename(), 3); list($domain, $locale, $format) = explode('.', $file->getBasename(), 3);

View File

@ -208,14 +208,14 @@ class HttpKernel extends BaseHttpKernel
return $controller; return $controller;
} }
$path = http_build_query($attributes); $path = http_build_query($attributes, '', '&');
$uri = $this->container->get('router')->generate($secure ? '_internal' : '_internal_public', array( $uri = $this->container->get('router')->generate($secure ? '_internal' : '_internal_public', array(
'controller' => $controller, 'controller' => $controller,
'path' => $path ?: 'none', 'path' => $path ?: 'none',
'_format' => $this->container->get('request')->getRequestFormat(), '_format' => $this->container->get('request')->getRequestFormat(),
)); ));
if ($queryString = http_build_query($query)) { if ($queryString = http_build_query($query, '', '&')) {
$uri .= '?'.$queryString; $uri .= '?'.$queryString;
} }

View File

@ -84,6 +84,8 @@ class ApcUniversalClassLoader extends UniversalClassLoader
* Finds a file by class name while caching lookups to APC. * Finds a file by class name while caching lookups to APC.
* *
* @param string $class A class name to resolve to file * @param string $class A class name to resolve to file
*
* @return string|null The path, if found
*/ */
public function findFile($class) public function findFile($class)
{ {

View File

@ -172,7 +172,7 @@ class ClassCollectionLoader
/** /**
* Writes a cache file. * Writes a cache file.
* *
* @param string $file Filename * @param string $file Filename
* @param string $content Temporary file content * @param string $content Temporary file content
* *
* @throws \RuntimeException when a cache file cannot be written * @throws \RuntimeException when a cache file cannot be written

View File

@ -216,8 +216,8 @@ class UniversalClassLoader
/** /**
* Registers a set of classes using the PEAR naming convention. * Registers a set of classes using the PEAR naming convention.
* *
* @param string $prefix The classes prefix * @param string $prefix The classes prefix
* @param array|string $paths The location(s) of the classes * @param array|string $paths The location(s) of the classes
* *
* @api * @api
*/ */

View File

@ -543,7 +543,7 @@ class Crawler extends \SplObjectStorage
/** /**
* Selects links by name or alt value for clickable images. * Selects links by name or alt value for clickable images.
* *
* @param string $value The link text * @param string $value The link text
* *
* @return Crawler A new instance of Crawler with the filtered list of nodes * @return Crawler A new instance of Crawler with the filtered list of nodes
* *
@ -560,7 +560,7 @@ class Crawler extends \SplObjectStorage
/** /**
* Selects a button by name or alt value for images. * Selects a button by name or alt value for images.
* *
* @param string $value The button text * @param string $value The button text
* *
* @return Crawler A new instance of Crawler with the filtered list of nodes * @return Crawler A new instance of Crawler with the filtered list of nodes
* *
@ -578,7 +578,7 @@ class Crawler extends \SplObjectStorage
/** /**
* Returns a Link object for the first node in the list. * Returns a Link object for the first node in the list.
* *
* @param string $method The method for the link (get by default) * @param string $method The method for the link (get by default)
* *
* @return Link A Link instance * @return Link A Link instance
* *
@ -617,8 +617,8 @@ class Crawler extends \SplObjectStorage
/** /**
* Returns a Form object for the first node in the list. * Returns a Form object for the first node in the list.
* *
* @param array $values An array of values for the form fields * @param array $values An array of values for the form fields
* @param string $method The method for the form * @param string $method The method for the form
* *
* @return Form A Form instance * @return Form A Form instance
* *
@ -641,6 +641,28 @@ class Crawler extends \SplObjectStorage
return $form; return $form;
} }
/**
* Converts string for XPath expressions.
*
* Escaped characters are: quotes (") and apostrophe (').
*
* Examples:
* <code>
* echo Crawler::xpathLiteral('foo " bar');
* //prints 'foo " bar'
*
* echo Crawler::xpathLiteral("foo ' bar");
* //prints "foo ' bar"
*
* echo Crawler::xpathLiteral('a\'b"c');
* //prints concat('a', "'", 'b"c')
* </code>
*
* @param string $s String to be escaped
*
* @return string Converted string
*
*/
static public function xpathLiteral($s) static public function xpathLiteral($s)
{ {
if (false === strpos($s, "'")) { if (false === strpos($s, "'")) {

View File

@ -142,7 +142,7 @@ class Form extends Link implements \ArrayAccess
*/ */
public function getPhpValues() public function getPhpValues()
{ {
$qs = http_build_query($this->getValues()); $qs = http_build_query($this->getValues(), '', '&');
parse_str($qs, $values); parse_str($qs, $values);
return $values; return $values;
@ -160,7 +160,7 @@ class Form extends Link implements \ArrayAccess
*/ */
public function getPhpFiles() public function getPhpFiles()
{ {
$qs = http_build_query($this->getFiles()); $qs = http_build_query($this->getFiles(), '', '&');
parse_str($qs, $values); parse_str($qs, $values);
return $values; return $values;

View File

@ -659,9 +659,9 @@ class Request
{ {
if (self::$trustProxy && $this->headers->has('X-Forwarded-Port')) { if (self::$trustProxy && $this->headers->has('X-Forwarded-Port')) {
return $this->headers->get('X-Forwarded-Port'); return $this->headers->get('X-Forwarded-Port');
} else {
return $this->server->get('SERVER_PORT');
} }
return $this->server->get('SERVER_PORT');
} }
/** /**

View File

@ -26,6 +26,8 @@ class ErrorHandler
E_USER_NOTICE => 'User Notice', E_USER_NOTICE => 'User Notice',
E_STRICT => 'Runtime Notice', E_STRICT => 'Runtime Notice',
E_RECOVERABLE_ERROR => 'Catchable Fatal Error', E_RECOVERABLE_ERROR => 'Catchable Fatal Error',
E_DEPRECATED => 'Deprecated',
E_USER_DEPRECATED => 'User Deprecated',
); );
private $level; private $level;

View File

@ -167,7 +167,7 @@ class Store implements StoreInterface
$entries = array(); $entries = array();
$vary = $response->headers->get('vary'); $vary = $response->headers->get('vary');
foreach ($this->getMetadata($key) as $entry) { foreach ($this->getMetadata($key) as $entry) {
if (!isset($entry[1]['vary'])) { if (!isset($entry[1]['vary'][0])) {
$entry[1]['vary'] = array(''); $entry[1]['vary'] = array('');
} }

View File

@ -135,7 +135,7 @@ class UrlGenerator implements UrlGeneratorInterface
// add a query string if needed // add a query string if needed
$extra = array_diff_key($originParameters, $variables, $defaults); $extra = array_diff_key($originParameters, $variables, $defaults);
if ($extra && $query = http_build_query($extra)) { if ($extra && $query = http_build_query($extra, '', '&')) {
$url .= '?'.$query; $url .= '?'.$query;
} }

View File

@ -8,6 +8,7 @@ annotations, which can then be checked against instances of these classes.
use Symfony\Component\Validator\Validator; use Symfony\Component\Validator\Validator;
use Symfony\Component\Validator\Mapping\ClassMetadataFactory; use Symfony\Component\Validator\Mapping\ClassMetadataFactory;
use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader; use Symfony\Component\Validator\Mapping\Loader\StaticMethodLoader;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\Validator\ConstraintValidatorFactory; use Symfony\Component\Validator\ConstraintValidatorFactory;
$validator = new Validator( $validator = new Validator(
@ -20,10 +21,10 @@ annotations, which can then be checked against instances of these classes.
'first_name' => new Assert\MinLength(101), 'first_name' => new Assert\MinLength(101),
'last_name' => new Assert\MinLength(1), 'last_name' => new Assert\MinLength(1),
)), )),
'email' => new Assert\Email(), 'email' => new Assert\Email(),
'simple' => new Assert\MinLength(102), 'simple' => new Assert\MinLength(102),
'gender' => new Assert\Choice(array(3, 4)), 'gender' => new Assert\Choice(array(3, 4)),
'file' => new Assert\File(), 'file' => new Assert\File(),
'password' => new Assert\MinLength(60), 'password' => new Assert\MinLength(60),
)); ));

View File

@ -118,8 +118,8 @@ EOF
public function testNonUtf8Exception() public function testNonUtf8Exception()
{ {
if (!function_exists('mb_detect_encoding')) { if (!function_exists('mb_detect_encoding') || !function_exists('iconv')) {
$this->markTestSkipped('Exceptions for non-utf8 charsets require the mb_detect_encoding() function.'); $this->markTestSkipped('Exceptions for non-utf8 charsets require the mb_detect_encoding() and iconv() functions.');
return; return;
} }