-
-
Notifications
You must be signed in to change notification settings - Fork 9.6k
[ClassLoader] Fixed ClassMapGenerator and added suport for traits #3529
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@@ -84,6 +84,7 @@ static private function findClasses($path) | |||
{ | |||
$contents = file_get_contents($path); | |||
$tokens = token_get_all($contents); | |||
$T_TRAIT = PHP_VERSION_ID < 50400 ? -1 : T_TRAIT; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not use version_compare with PHP_VERSION? It's not like the code is performance critical, and I think it's just more readable since more common. Same below in the tests.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't agree. More common != more readable.
Also, I think that version_compare()
is more error-prone, see: #3470.
Using PHP_VERSION_ID
you won't make this mistake since it doesn't include extra version.
@@ -84,6 +84,7 @@ static private function findClasses($path) | |||
{ | |||
$contents = file_get_contents($path); | |||
$tokens = token_get_all($contents); | |||
$T_TRAIT = version_compare(PHP_VERSION, '5.4.0RC1', '<') ? -1 : T_TRAIT; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why are you comparing to '5.4.0RC1' version? Why not just '5.4.0'?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess at the time the code was written PHP 5.4.0 was not released. It can certainly be 5.4.0
now.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
5.4
?
Ultimately @fabpot can call it, but I'm pro version_compare because it's just typically used for those checks, which may not make it more readable but makes it less WTF since it's a common pattern. |
I prefer |
+1 for |
@fabpot done |
Commits ------- 1ec075d [ClassLoader] Fixed version compare 8fb529c [ClassLoader] Fixed ClassMapGenerator and added suport for traits Discussion ---------- [ClassLoader] Fixed ClassMapGenerator and added suport for traits --------------------------------------------------------------------------- by hason at 2012-03-08T10:49:53Z @fabpot, @Seldaek ``PHP_VERSION_ID`` or ``version_compare``? --------------------------------------------------------------------------- by Seldaek at 2012-03-08T11:42:20Z Ultimately @fabpot can call it, but I'm pro version_compare because it's just typically used for those checks, which may not make it more readable but makes it less WTF since it's a common pattern. --------------------------------------------------------------------------- by drak at 2012-03-08T13:43:18Z I prefer `version_compare()` with `phpversion()` as it's way more readable and obvious what it is. --------------------------------------------------------------------------- by fabpot at 2012-03-08T17:06:25Z +1 for `version_compare()` --------------------------------------------------------------------------- by hason at 2012-03-09T07:19:10Z @fabpot done
Commits ------- df11e62 [FrameworkBundle] Used $output->write() instead of echo c3bf479 [FrameworkBundle] Used Process component cfa2dff [FrameworkBundle] Changed server:run command description e7d38c1 [FrameworkBundle] Changed PHP version detection (see: #3529) 4a3f6d5 [FrameworkBundle] Removed global variable from router script 519d431 [FrameworkBundle] Fixed built-in server router script d9a0a17 [FrameworkBundle] Added server:run command Discussion ---------- [FrameworkBundle] Added server:run command (PHP 5.4 built-in web server) Bug fix: no Feature addition: yes Backwards compatibility break: no Symfony2 tests pass: [](http://travis-ci.org/michal-pipa/symfony) Fixes the following tickets: - Todo: - PHP 5.4 comes with [built-in web server](http://www.php.net/manual/en/features.commandline.webserver.php). I've created command which allows to easily run Symfony2 application using this new feature. Usage: server:run [-d|--docroot="..."] [-r|--router="..."] [address] Arguments: address Address:port (default: 'localhost:8000') Options: --docroot (-d) Document root (default: 'web/') --router (-r) Path to custom router script Help: The server:run runs Symfony2 application using PHP built-in web server: app/console server:run To change default bind address and port use the address argument: app/console server:run 127.0.0.1:8080 To change default docroot directory use the --docroot option: app/console server:run --docroot=htdocs/ If you have custom docroot directory layout, you can specify your own router script using --router option: app/console server:run --router=app/config/router.php See also: http://www.php.net/manual/en/features.commandline.webserver.php It requires PHP 5.4, otherwise this command will be disabled. I think that this is very convenient (especially for new users). All you have to do is download Symfony, install vendors and run this command. You don't have to configure "real" web server, in fact any other server is not required. You don't have cache and logs permission problem, because server runs with your local user permissions. --------------------------------------------------------------------------- by blogsh at 2012-03-06T17:38:10Z Great feature! I was about to write something like this when I saw that you have already started implementing this :) Some issues: 1. Missing newlines at the end of the files 2. If I try this server command with the default Symfony Standard Edition Acme demo the links on the main page do not work. The demo link links to "//demo" and the configurator link to "//_configurator". If I go to `localhost:8000/demo` directly the page is rendered as usual and all sub links are generated correctly. I could solve the problem by adding one line: $_SERVER['SCRIPT_FILENAME'] = 'ANYTHING'; require 'app_dev.php'; I'm not sure where this problem comes from. Do you experience the same behaviour? Otherwise I'll do some more investigations to find the source of the problem. 3 . I think it would be a nice feature if you would generate a router.php based on the setting of the --env flag if no custom router file has been specified. This way it would be easy to switch between dev and prod. --------------------------------------------------------------------------- by michal-pipa at 2012-03-06T19:00:24Z @blogsh > Missing newlines at the end of the files I've checked and I can see newlines at the end of files. Are you sure about this? > If I try this server command with the default Symfony Standard Edition Acme demo the links on the main page do not work. The demo link links to "//demo" and the configurator link to "//_configurator". If I go to localhost:8000/demo directly the page is rendered as usual and all sub links are generated correctly. I could solve the problem by adding one line: > > $_SERVER['SCRIPT_FILENAME'] = 'ANYTHING'; > require 'app_dev.php'; > > I'm not sure where this problem comes from. Do you experience the same behaviour? Otherwise I'll do some more investigations to find the source of the problem. I can reproduce this by changing front controller name from `app.php` to `app_dev.php`. I'll investigate on this. > I think it would be a nice feature if you would generate a router.php based on the setting of the --env flag if no custom router file has been specified. This way it would be easy to switch between dev and prod. You can easily change environment specifying front controller in URL. It works exactly the same way as default Apache configuration. This is intended behavior, as it would be misleading if every server had different rewrite rules. If you really want to change it, then you can write your own router and pass it as a value to `router` option. --------------------------------------------------------------------------- by blogsh at 2012-03-06T19:13:55Z Wasn't aware that github omits the trailing white line, sorry. Normally I use a rather inflexible nginx configuration, so I also wasn't aware of this (rather obvious) trick of changing the url. Thanks for that. --------------------------------------------------------------------------- by stof at 2012-03-06T22:12:16Z @blogsh it does not omit it. It displays it in the Linux way where the newline char is part of the line (and so there is a message ``no newline at end of file`` in the diff when it is missing). --------------------------------------------------------------------------- by michal-pipa at 2012-03-07T07:18:23Z @blogsh I've fixed router script. Now you can use both front controllers. --------------------------------------------------------------------------- by michal-pipa at 2012-03-07T07:34:58Z I've also hardcoded front controller name in router script and removed global variable, as there was no way to unset it. --------------------------------------------------------------------------- by michal-pipa at 2012-03-13T07:57:04Z I've used Process component, but now I don't get any stdout output (only stderr). --------------------------------------------------------------------------- by michal-pipa at 2012-03-13T18:01:58Z I've replaced `echo` by `$output->write()` and removed `$process` as it was not used actually.
No description provided.