On Apr 7, 2012, at 9:04 AM, Tom Boutell <t...@punkave.com> wrote: > A thoughtful suggestion. But the trouble with a php.ini setting is that you > can't tell if it is enabled when writing your class file. That makes it > impossible to write portable libraries. The keywords would always be > available. And no one has to type them outside of an auto loader (: > > Sent from my iPhone
Why would you need to? With it on or off <?php would work like it did before: With it off (how it is now): - Text before <?php would be printed to the output buffer. - ?> ends php code and prints text between it and the next <?php tag or the end of the file. With it on: - <?php is optional and must be first in the file. White spaces before <?php are ignored and text before throws an error (perhaps white space should through an error). The shebang line for the cli sapi is the only exception. - ?> is explicitly forbidden. If classes start with <?php and leave out the ending ?> this should be fine. Most classes written with PHP 5+ comparability do this anyway. The only way I see this not working is for PHP short tags where PHP is used as a template language. A lot of people decide to use other template engines though, like Twig. I personally avoid short tags on large projects and use them only on small quick and dirty projects. Luke (Sorry, I keep forgetting to hit reply all) > > On Apr 7, 2012, at 11:46 AM, Luke Scott <l...@cywh.com> wrote: > >> On Apr 7, 2012, at 7:00 AM, Tom Boutell <t...@punkave.com> wrote: >> >>> That's a good point too. >>> >>> I think this is a better proposal: >>> >>> include_code, require_code, and require_code_once would work just like >>> include, require and require_once, except that the parser would start >>> out in PHP mode. >>> >>> .phpc is then just a convention for naming PHP files that start out >>> with code - a convention that autoloaders should respect, just as they >>> now respect the .php convention. "The user asked for the Monkey class, >>> and I see Monkey.phpc is out there; I'll grab that with >>> require_code_once." >>> >>> Putting this decision on the autoloader makes more sense because >>> autoloaders already contain assumptions about file extensions. They >>> have to in order to do their job of translating a class name to a >>> particular path somewhere. >>> >>> Folks who did not care for this functionality could then choose to >>> entirely ignore it. Class library developers who liked it would make >>> autoloaders available that honored it, freeing end-user developers >>> from thinking about it. It becomes self-contained, and people who are >>> writing old-school .php standalone scripts or pages are entirely >>> unaffected. >> >> Tony I think your idea has some merit. If it were up to me I'd remove >> <?php all together. It really is bad practice to mix HTML into code. >> >> But I feel that adding new keywords is not the way to do it. >> Personally I'd like to see a php.ini setting to disallow the ending ?> >> tag and assume .php files just have PHP code. The starting <?php tag >> would be optional. White space would be ignored and non-white space >> characters before <?php would throw a fatal error. >> >> Doing it this way would disallow bad practices but still make existing >> PHP scripts compatible. >> >> I think that doing that would be quite reasonable. Those who complain >> about it likely ignore industry best practices anyway. This option >> could be turned off by default at first, made default later, and then >> ?> be deprecated all together. >> >> So with this option enabled ?> is forbidden, <?php is optional, and >> the text before <?php is handled differently - white spaces ignored, >> text before throws an error (unless it's a shebang line in cli mode). >> >> Hopefully that made sense. Does this sound good to you? >> >> I'm sorry you had to endure such a nasty troll. I am so sick of self >> righteous bullies who think they know it all. >> >> Luke >> >>> >>> On Sat, Apr 7, 2012 at 9:50 AM, John Bafford <dsha...@zort.net> wrote: >>>> >>>> On Apr 7, 2012, at 09:39, Tom Boutell wrote: >>>> >>>>>> From the viewpoint of someone writing reusable classes, the need to >>>>> start with <?php and reprimand anybody who accidentally puts a newline >>>>> above it is a silly annoyance they don't experience with other tools. >>>>> >>>>> That said, you are making valid points, I'm not convinced myself that >>>>> "file extensions" necessarily should or could be determined in every >>>>> context. But it seems the most viable way of addressing the issue - if >>>>> a viable way even exists. Partly I want to convince myself that this >>>>> either can or can't ever be improved, and move on either way (: >>>> >>>> That "silly annoyance" doesn't seem to bother anyone who writes command >>>> line tools, which require the #! line specifying the command interpreter >>>> to be the first bytes in the file, with no leading white space whatsoever. >>>> Especially on unix systems (but also on the Mac), the file extension does >>>> not affirmatively indicate the file type or whether or not it can be >>>> executed. >>>> >>>> Also, from a CLI perspective, you don't want extensions in the names of >>>> your scripts, because then it causes problems/confusion/extra work if you >>>> later decide to change the language the script is written in. >>>> >>>> -John >>>> >>>> -- >>>> John Bafford >>>> http://bafford.com/ >>>> >>>> >>>> -- >>>> PHP Internals - PHP Runtime Development Mailing List >>>> To unsubscribe, visit: http://www.php.net/unsub.php >>>> >>> >>> >>> >>> -- >>> Tom Boutell >>> P'unk Avenue >>> 215 755 1330 >>> punkave.com >>> window.punkave.com >>> >>> -- >>> PHP Internals - PHP Runtime Development Mailing List >>> To unsubscribe, visit: http://www.php.net/unsub.php >>> > > -- > PHP Internals - PHP Runtime Development Mailing List > To unsubscribe, visit: http://www.php.net/unsub.php > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php