I see what you're saying, but you're proposing a new keyword to include code that does what plain old 'require' does now (assuming it's not a nice clean class file that is being included). Which means that valid code today is busted code once this feature comes out. That seems like a very hard sell.
On Mon, Apr 9, 2012 at 1:10 PM, Luke Scott <l...@cywh.com> wrote: > On Apr 9, 2012, at 9:16 AM, Tom Boutell <t...@punkave.com> wrote: > >> It sounds like you are proposing to gradually kill the use of PHP for >> templating entirely, which I don't think is something people would >> vote for. > > I'm not saying that at all. I'm saying that PHP code should be clearly > separated from template code. <?php should be optional at the start of > the file and IF a keyword should be added it should be for templates > and short-tags. > > 99% of modern PHP code is going to be classes that start with <?php > and omit the ending ?> (since PHP 5 due to how easy it is for white > space to end up on the tail end of a file). this is even the case with > procedural code. > > Half the PHP frameworks out there have their own template engine > because they can do a lot more than what short tags offer. Example: > Twig offers template inheritance. > > Introducing a keyword for PHP code without the <?php tag is > impractical. It makes much more sense to have a keyword for templates. > > For non-template code the starting <?php tag should always work as it > has before for backwards compatibility. The difference is you cannot > use ?> and text before the opening <?php tag is either ignored or > throws an error. > >> I sometimes use perfectly good older frameworks that do use >> .php files for templating in a reasonable way, and I'm one of the >> advocates for migrating away from starting everything with <?php. I >> would have to vote against it myself. > > And those files can be included with something like require_template > or you can turn off the option in the ini file. > > The point is in EITHER MODE a php file that starts with <?php will > work as it did before. The new mode would just disallow you to break > out of PHP code with ?>. > >> There's no reason to kill good >> code that passes its tests just because it uses inline HTML. I won't >> even know I have that code in my project from some third party library >> until I find out the hard way. No, just no. (: > > I'm not trying to kill anything. In fact what I'm proposing would be a > smooth transition to something that is already done. The difference is > at some point you won't be able to do this: > > <?php > class Object > { > public function output() > { > ?> > Print me! > <?php > } > } > > I cringe every time I see this. There is no excuse since we have here/nowdocs. > > For people that use PHP as a template there can be other options. I'm > not totally against a new keyword, but I am against a new keyword for > including normal PHP code. It just doesn't make sense. No matter what > you name it (require_code, require_file, require_path) it's damned > confusing. If you did it the other way around its much clearer: > require_template. > > With require_template you're also free to expand template > functionality while keeping code clearly separated. > >> I did propose one new keyword, but by proposing one keyword with a >> future-friendly syntax instead of four new keywords I'm attempting to >> help with the pollution problem. > > It's not as much as adding a keyword as it is what keyword you're adding. > > I hope the way I've explained things makes sense. > > Luke > >> >> On Mon, Apr 9, 2012 at 11:43 AM, Luke Scott <l...@cywh.com> wrote: >>> Tom, >>> >>> As I've said before I don't think new keywords are the answer. They >>> will just pollute the language even further. >>> >>> I also don't think an ini setting is a bad thing either. It is often >>> used in PHP as a way to transition from way of doing things to >>> another. First you introduce it with it being off by default, then on >>> by default, then deprecate the old behavior. It's quite normal in >>> PHP's history. >>> >>> In another email someone mentioned doing two rfcs. In both cases are >>> we talking about removing <?php ? Because it's become somewhat >>> confusing to keep track of what is being talked about. If that is the >>> case, continue reading. >>> >>> I would prefer the starting <?php tag be optional rather than removed. >>> Just explicitly forbid the ending ?> tag and treat text before the >>> opening <?php tag differently. Perhaps ignore it (rather than print) >>> or throw an error. >>> >>> That is at least how I would prefer the "code" mode as most >>> non-template files only start with <?php. It allows for backwards >>> compatibility. >>> >>> If you must add keywords it should be something like require_template >>> NOT require_code/require_file. Templates are the exception, not the >>> norm. >>> >>> Luke Scott >>> >>> On Apr 8, 2012, at 9:32 AM, Tom Boutell <t...@punkave.com> wrote: >>> >>>> I have written an RFC proposing backwards-compatible support for >>>> source files without an opening <?php tag: >>>> >>>> https://wiki.php.net/rfc/source_files_without_opening_tag >>>> >>>> This RFC is not yet listed at https://wiki.php.net/rfc. I am not sure >>>> what the requirements are to get it added to the "Under Discussion" >>>> session and get the ball rolling formally. Please enlighten and I'll >>>> do whatever is required. >>>> >>>> Thanks! >>>> >>>> -- >>>> 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 >>>> >> >> >> >> -- >> 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 >> -- 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