Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Commits on Sep 30, 2011
  1. @fabpot
Commits on Sep 29, 2011
  1. @fabpot

    merged branch igorw/composer (PR #2275)

    fabpot authored
    Commits
    -------
    
    731b28b [composer] add missing deps for FrameworkBundle
    9c8f100 [composer] change ext/intl to the new ext-intl syntax
    d535afe [composer] fix monolog-bridge composer.json, add more inter-component deps
    9ade639 [composer] add composer.json
    
    Discussion
    ----------
    
    Composer
    
    This PR adds a composer.json file for [composer](https://github.com/composer/composer) ([more info](packagist.org/about-composer)).
    
    For discussion you can also go into #composer-dev on freenode and argue with naderman, seldaek and everzet.
    
    ---------------------------------------------------------------------------
    
    by naderman at 2011/09/26 15:51:51 -0700
    
    You haven't entered any keywords, they might come in handy when searching for packages on packagist.
    
    But really this is just a +1 ;-)
    
    ---------------------------------------------------------------------------
    
    by stof at 2011/09/26 16:12:21 -0700
    
    See my comments on your previous (non-rebased) commit: igorw/symfony@f1c0242
    
    ---------------------------------------------------------------------------
    
    by igorw at 2011/09/27 00:04:36 -0700
    
    Following dependencies do not have a composer.json yet: Twig, Doctrine (orm, dbal, common), swiftmailer.
    
    Also missing from the standard edition: assetic, twig-extensions, jsm-metadata, SensioFrameworkExtraBundle, JMSSecurityExtraBundle, SensioDistributionBundle, SensioGeneratorBundle, AsseticBundle.
    
    The point is, those can be added later on. Having the components composerized is already a leap forward. Also, doctrine depends on some symfony components, we've got to start somewhere.
    
    ---------------------------------------------------------------------------
    
    by Seldaek at 2011/09/27 00:36:41 -0700
    
    Also, just for information, the plan is to have `symfony/framework-bundle` be the "framework", with all dependencies to doctrine etc, though we should really only have strict requirements in there, and then in symfony-standard we ship a composer.json that requires the framework-bundle, doctrine-orm and things like that that are not essential to core. Otherwise people don't have a choice about what they use anymore.
    
    Just a comment btw, the json is invalid, all / should be escaped. However json_decode is nice enough to parse those without complaining, browsers do too, even Crockford's json2.js does, so I'm not sure if we should privilege readability over strictness, since it seems nobody really cares about this escaping.
    
    ---------------------------------------------------------------------------
    
    by igorw at 2011/09/27 00:41:39 -0700
    
    So, I've implemented all of @stof's suggestions, except (for reasons stated above):
    
    * doctrine to DoctrineBundle
    * swiftmailer to SwiftmailerBundle
    * twig to TwigBundle
    * doctrine-common to Validator
    * FrameworkBundle (what exactly does it depend on?)
    
    ---------------------------------------------------------------------------
    
    by stof at 2011/09/27 00:52:31 -0700
    
    @igorw at least HttpKernel, Routing, Templating, EventDispatcher, Doctrine Common (annotations cannot be disabled), Translator, Form (optional), Validator (optional), Console (optional). See the service definitions to see the others
    
    @Seldaek FrameworkBundle does not depend on Doctrine, except for Common
    
    ---------------------------------------------------------------------------
    
    by beberlei at 2011/09/27 03:15:34 -0700
    
    What does the symfony/ or ext/ prefix control in composer?
    
    ---------------------------------------------------------------------------
    
    by Seldaek at 2011/09/27 03:33:52 -0700
    
    symfony/ is just the (mandatory) vendor namespace. Also ext/ has been renamed to ext- now, so it's not in any vendor, and should avoid potential issues.
    
    ---------------------------------------------------------------------------
    
    by beberlei at 2011/09/27 05:07:03 -0700
    
    @Seldaek Mandatory? So every package name is "vendor/package"? I like that because previously i thought package names are not namespaced, and thus clashes could occur between different communities easily.
    
    ---------------------------------------------------------------------------
    
    by Seldaek at 2011/09/27 05:16:20 -0700
    
    @beberlei: Mandatory. As of yesterday http://packagist.org/ will tell you you have an invalid package name if there's no slash in it. See composer/packagist@1306d1c#diff-3
Commits on Sep 28, 2011
  1. @fabpot
Commits on Sep 27, 2011
  1. @igorw
Commits on Sep 26, 2011
  1. @igorw

    [composer] add composer.json

    igorw authored
Commits on Sep 23, 2011
  1. @fabpot
  2. @geezmo

    Added PCRE_DOTALL modifier to RouteCompiler to allow urlencoded linef…

    geezmo authored
    …eed in route parameters.
Commits on Aug 30, 2011
  1. @fabpot

    [Routing] fixed a caching issue when annotations are used on a base c…

    fabpot authored
    …lass used by more than one concrete class
    
    Doctrine caches annotations. For methods, it uses PHP reflection and the getDeclaringClass() to create
    a unique cache key. Unfortunately, if you have 2 classes that extend another one, the cache will be shared.
    It's not a problem except that before this patch, the default route name was also cached (as the cache is serialized
    after we changed the object). So, all other classes inherited this default route name. The fix is quite easy:
    just don't change the read annotation object.
  2. @fabpot
  3. @fabpot
Commits on Aug 13, 2011
  1. @fabpot

    Revert "expanded namespaces within phpdoc (special for PhpStorm)"

    fabpot authored
    This reverts commit 6e7439e73ade26bca01edc193c836b35aaa91ffe.
Commits on Aug 10, 2011
  1. @realmfoo
Commits on Jul 26, 2011
  1. @fabpot

    [Routing] changed UrlGeneratorInterface::generate() signature to allo…

    fabpot authored
    …w passing objects instead of arrays
Commits on Jul 22, 2011
  1. @fabpot

    merged branch ericclemmons/fix-router-generator-empty-query-string (P…

    fabpot authored
    …R #1773)
    
    Commits
    -------
    
    03c7cfe UrlGenerator no longer appends '?' if query string is empty
    
    Discussion
    ----------
    
    UrlGenerator no longer appends '?' if query string is empty
    
    If you generate a URL using null parameters (`array('foo' => null, 'bar' => null')`), `http_build_query` returns an empty string, resulting in a trailing `?` at the end of the generated URL.
    
    This fixes that so that, if there are `$extra` params & `http_build_query` is empty, the URL is no longer appended.
    
    ---------------------------------------------------------------------------
    
    by fabpot at 2011/07/22 10:15:26 -0700
    
    Can you add unit tests?
    
    ---------------------------------------------------------------------------
    
    by ericclemmons at 2011/07/22 10:52:21 -0700
    
    Yes sir, will do.
    
    -Eric Clemmons
     Sent from my iPad Nano
    
    On Jul 22, 2011, at 12:15 PM, fabpot<reply@reply.github.com> wrote:
    
    > Can you add unit tests?
    >
    > --
    > Reply to this email directly or view it on GitHub:
    > symfony/symfony#1773 (comment)
    
    ---------------------------------------------------------------------------
    
    by ericclemmons at 2011/07/22 11:55:30 -0700
    
    **Added passing test.**
    
    Currently `master` fails test:
    
    ```
    1) Symfony\Tests\Component\Routing\Generator\UrlGeneratorTest::testUrlWithNullExtraParameters
    Failed asserting that two strings are equal.
    --- Expected
    +++ Actual
    @@ @@
    -http://localhost/app.php/testing
    +http://localhost/app.php/testing?
    
    //tests/Symfony/Tests/Component/Routing/Generator/UrlGeneratorTest.php:114
    ```
  2. @ericclemmons
Commits on Jul 19, 2011
  1. @fabpot

    [Routing] fixed default value for Routes as they can be anything if t…

    fabpot authored
    …hey don't need to be used as default values for placeholders
Commits on Jul 17, 2011
  1. @fabpot

    [Routing] fixed a bug when a default value is an integer

    fabpot authored
    A default value is always a string in the context of routing.
Commits on Jul 12, 2011
  1. @vicb

    [Routing] Allow multiple `@Route` annotations with a default name on …

    vicb authored
    …a single method (fixes #1647)
Commits on Jul 7, 2011
  1. @fabpot
  2. @Seldaek
  3. @Seldaek
Commits on Jul 1, 2011
  1. @fabpot

    merged branch Seldaek/router_esc (PR #1471)

    fabpot authored
    Commits
    -------
    
    418d6a0 [Routing] Fix syntax error when dumping routes with single quotes in the requirements or pattern
    2b5e22d [Routing] Fix ApacheDumper when a space appears in a default value
    6c7f484 [Routing] Fix dumper so it doesn't print trailing whitespace
    761724a [Routing] Adjust urlescaping rules, fixes #752
    
    Discussion
    ----------
    
    [Router] Bunch o' Fixes
    
    The first commit changes the escaping rule to fix issues I had previously, and #752 as well, here's from the full commit message:
    
        Only + and % are now encoded in generated routes, since they are the only characters that, if not encoded, could cause problems/conflicts when decoded. Namely + turns into a space, and % followed by numbers could do funky things.
    
        The matcher decodes everything which works since nothing will have %NN without being escaped, and + are escaped as well.
    
    Second commit is just a test fix for the first
    
    Third and fourth are simply dumper escaping issues, nothing to argue about.
    
    Note that all changes have had test cases added, and I spent a few hours torturing/testing all this stuff with both Apache and PHP dumpers, in many browsers, and with URLs as wonky as `/%01%02%03%04%05%06%07%08%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%20!%22$%25&%27%28%29*+,-./0123456789:;%3C=%3E@ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B|%7D~/baz` which essentially represent the 1-255 char range minus ? and #.
    
    The only issues I really encountered after all the patches were applied is that Apache refuses to match `%22` (= `"`) and `*` in a url. I guess it's just because they're not allowed chars in windows paths, but | and < > works fine though. Anyway this works with the PHP dumper, and it didn't work either without my patches so it's not like I broke it, I'm just saying for the record.
Commits on Jun 30, 2011
  1. @fabpot
Commits on Jun 29, 2011
  1. @Seldaek

    [Routing] Fix syntax error when dumping routes with single quotes in …

    Seldaek authored
    …the requirements or pattern
  2. @Seldaek
  3. @Seldaek

    [Routing] Fix dumper so it doesn't print trailing whitespace

    Seldaek authored
    This fixes tests from the previous commit
  4. @Seldaek

    [Routing] Adjust urlescaping rules, fixes #752

    Seldaek authored
    Only + and % are now encoded in generated routes, since they are the only characters that, if not encoded, could cause problems/conflicts when decoded. Namely + turns into a space, and % followed by numbers could do funky things.
    
    The matcher decodes everything which works since nothing will have %NN without being escaped, and + are escaped as well.
Commits on Jun 17, 2011
  1. @fabpot
  2. @fabpot
Commits on Jun 15, 2011
  1. @fabpot

    [Routing] optimized PHP dumper when the parent prefix is the same for…

    fabpot authored
    … several adjacent collections (avoids the same test to be made)
  2. @fabpot
  3. @fabpot

    merged branch lmcd/master (PR #1290)

    fabpot authored
    Commits
    -------
    
    49dd558 Couple more CS fixes
    5a986bf Add $keysCount & minor CS fix
    91f4097 [Routing] Better nesting for RouteCollections in dumped URL matcher classes With this change, a route prefixed with '/blogger' will be nested inside '/blog' (for example)
    
    Discussion
    ----------
    
    [Routing] Better nesting for RouteCollections in dumped URL matcher classes
    
    Consider the following routing file:
    
        _blog:
            resource: "@AcmeDemoBundle/Resources/config/routing/BlogController.yml"
            prefix:   /blog
    
        _blogger:
            resource: "@AcmeDemoBundle/Resources/config/routing/BloggerController.yml"
            prefix:   /blogger
    
        _bloggeroo:
            resource: "@AcmeDemoBundle/Resources/config/routing/BloggerooController.yml"
            prefix:   /bloggeroo
    
        _blogtest:
            pattern:   /blogtest
            defaults:  { _controller: AcmeDemoBundle:Blog:test }
    
        login:
            pattern:   /login
            defaults:  { _controller: AcmeDemoBundle:Security:login }
    
    Note: Each imported file contains two simple blog/blogger/bloggeroo routes (e.g. blog_index & blog_view)
    With this change, the cached URL matcher looks something like this:
    
    ```php
    <?php
    class appprodUrlMatcher
    {
      public function match($pathinfo)
      {
          $allow = array();
    
          if (0 === strpos($pathinfo, '/blog')) {
              // blog_index
              if (preg_match('#^/blog/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
              // blog_view
              if (preg_match('#^/blog/(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
              if (0 === strpos($pathinfo, '/blogger')) {
                  // blogger_index
                  if (preg_match('#^/blogger/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
                  // blogger_view
                  if (preg_match('#^/blogger/(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
                  if (0 === strpos($pathinfo, '/bloggeroo')) {
                      // bloggeroo_index
                      if (preg_match('#^/bloggeroo/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
                      // bloggeroo_view
                      if (preg_match('#^/bloggeroo/(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {...}
    
                      throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
                  }
    
                  throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
              }
    
              // _blogtest
              if ($pathinfo === '/blogtest') {...}
    
              throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
          }
    
          // login
          if ($pathinfo === '/login') {...}
    
          throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
      }
    }
    ```
    
    As far as I can see, you can throw the 404 earlier (as I've done), as by nesting all these possibilities, there is no chance another route will be matched outside the parent if statement.
    
    ---------------------------------------------------------------------------
    
    by stloyd at 2011/06/11 08:37:15 -0700
    
    You should follow Symfony [CS rules] (http://symfony.com/doc/current/contributing/code/standards.html), also you should modify tests.
    
    ---------------------------------------------------------------------------
    
    by lmcd at 2011/06/11 08:46:32 -0700
    
    Besides the inline `continue` statement, I can't see spot any other CS violations. I'm on to the updated tests.
    
    ---------------------------------------------------------------------------
    
    by fabpot at 2011/06/13 02:19:14 -0700
    
    What if you have this:
    
        _blog:
            resource: "@AcmeDemoBundle/Resources/config/routing/BlogController.yml"
            prefix:   /blog
    
        login:
            pattern:   /login
            defaults:  { _controller: AcmeDemoBundle:Security:login }
    
        _blogger:
            resource: "@AcmeDemoBundle/Resources/config/routing/BloggerController.yml"
            prefix:   /blogger
    
    You cannot send 404 early because the same `blog` prefix is used in two different places. I can see many things that will break with this patch. I'm pretty sure we can enhance the performance of the existing code but let's do that after 2.0.
    
    ---------------------------------------------------------------------------
    
    by lmcd at 2011/06/13 05:04:03 -0700
    
    @fabpot: The code was designed so it would work in these kind of circumstances. I ran the dumper against the routing file you provided and this is the output below.
    
    I see no reason why you can't throw the 404 earlier, as by nesting everything with similar prefixes, we're eliminating the possibility that a route will ever be matched outside of that if statement.
    
    ```php
    public function match($pathinfo)
    {
        $allow = array();
    
        if (0 === strpos($pathinfo, '/blog')) {
            // blog_index
            if (preg_match('#^/blog/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {
                ...
            }
    
            // blog_view
            if (preg_match('#^/blog/(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {
                ...
            }
    
            if (0 === strpos($pathinfo, '/blogger')) {
                // blog_index
                if (preg_match('#^/blogger/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {
                    ...
                }
    
                // blog_view
                if (preg_match('#^/blogger/(?P<year>\d{4})/(?P<month>\d{2})/(?P<slug>[^/]+?)$#x', $pathinfo, $matches)) {
                    ...
                }
    
                throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
            }
    
            throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
        }
    
        // login
        if ($pathinfo === '/login') {
            ...
        }
    
        throw 0 < count($allow) ? new MethodNotAllowedException(array_unique($allow)) : new ResourceNotFoundException();
    }
    ```
    
    ---------------------------------------------------------------------------
    
    by fabpot at 2011/06/13 07:48:49 -0700
    
    Can you add some more tests to ensure that everything works fine and that we won't have regressions later on? Thanks.
Commits on Jun 14, 2011
  1. @fabpot
  2. @fabpot
  3. @fabpot
Something went wrong with that request. Please try again.