Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:59523 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 39943 invoked from network); 9 Apr 2012 17:43:16 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 9 Apr 2012 17:43:16 -0000 Authentication-Results: pb1.pair.com smtp.mail=ralph@ralphschindler.com; spf=permerror; sender-id=unknown Authentication-Results: pb1.pair.com header.from=ralph@ralphschindler.com; sender-id=unknown Received-SPF: error (pb1.pair.com: domain ralphschindler.com from 209.85.161.170 cause and error) X-PHP-List-Original-Sender: ralph@ralphschindler.com X-Host-Fingerprint: 209.85.161.170 mail-gx0-f170.google.com Received: from [209.85.161.170] ([209.85.161.170:50429] helo=mail-gx0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 2F/31-34074-3BF138F4 for ; Mon, 09 Apr 2012 13:43:15 -0400 Received: by ggmb2 with SMTP id b2so2236034ggm.29 for ; Mon, 09 Apr 2012 10:43:12 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding :x-gm-message-state; bh=A1K+pp9Stmnxvb7jnaK4evs826K4Tpd5J199SPIHyBI=; b=B02irr6+j/flksnUpv2zBEBEXF2fBdqHvF9odwBbOc0qWVVNbevAd7dvf1gakCAuVo iB3movWqqzIM73quUZyf+QEaaPnZ4o/2UOyCnxuMUf5EBtgshOcu03ERVAaSuBnAHFwG 4KscE7fBincOlH0+O6PKzW7lEq1uBWT1iBnDJLeewLH+OzrBAgrx6oWMD3nqFyaAE9o4 YZezORBuceTTa8a8w1/HbL3VzPe0O3hcAJ970wHrVDO2gm6D3nrTr92tndwYgZeRuCQV fklC/h6rW8pqUc5WxWUz+Bc8yPaq9yVzuwJLkb1rfAuaefz1Y/lDWJ5a4rJnlc8SAuQk Z44w== Received: by 10.60.0.196 with SMTP id 4mr11651071oeg.0.1333993392574; Mon, 09 Apr 2012 10:43:12 -0700 (PDT) Received: from ralph-mac.local (ip174-73-14-247.no.no.cox.net. [174.73.14.247]) by mx.google.com with ESMTPS id c6sm13269054oec.13.2012.04.09.10.43.11 (version=SSLv3 cipher=OTHER); Mon, 09 Apr 2012 10:43:11 -0700 (PDT) Message-ID: <4F831FAE.2030208@ralphschindler.com> Date: Mon, 09 Apr 2012 12:43:10 -0500 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 MIME-Version: 1.0 To: internals@lists.php.net References: <-5877502932356715576@unknownmsgid> <-3647345967307864634@unknownmsgid> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Gm-Message-State: ALoCoQk31EBSUku7uz51A0zf+hCTZNDXoshFeWAV0MEXT16t9zKk7Kok1buxTVlnvgwG6ZFz/Brc Subject: Re: [PHP-DEV] RFC: source files without opening tag From: ralph@ralphschindler.com (Ralph Schindler) Hey Tom, An idea, why not overload require/include with a second parameter that simply enforces an include mode. For example // in some autoloader (include, requires, and *_onces) include $pathToFile, INCLUDE_MODE_PHP_ONLY; This would tell the parser/executor to start in PHP mode and never leave it, that way, ending tags would throw a runtime/execution error. Other constants and behaviors could be: INCLUDE_MODE_PHP_START; INCLUDE_MODE_PASSTRHOUGH_START; (the current and default behavior) This would have the least amount of impact on BC, and seeminlyg would be a friendly change to the lexer/syntax. Thoughts? -ralph On 4/9/12 12:23 PM, Tom Boutell wrote: > Also, your objection - that 'require_code' is confusing - would most > likely be an issue for a handful of people who write autoloaders. > Those clean PHP class files are almost always autoloaded. > > On Mon, Apr 9, 2012 at 1:22 PM, Tom Boutell wrote: >> 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 wrote: >>> On Apr 9, 2012, at 9:16 AM, Tom Boutell 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.>> 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>> 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>> impractical. It makes much more sense to have a keyword for templates. >>> >>> For non-template code the starting>> has before for backwards compatibility. The difference is you cannot >>> use ?> and text before the opening>> 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>>> 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>> 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: >>> >>> >> class Object >>> { >>> public function output() >>> { >>> ?> >>> Print me! >>> >> } >>> } >>> >>> 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 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>>>> confusing to keep track of what is being talked about. If that is the >>>>> case, continue reading. >>>>> >>>>> I would prefer the starting>>>> Just explicitly forbid the ending ?> tag and treat text before the >>>>> opening>>>> or throw an error. >>>>> >>>>> That is at least how I would prefer the "code" mode as most >>>>> non-template files only start with>>>> 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 wrote: >>>>> >>>>>> I have written an RFC proposing backwards-compatible support for >>>>>> source files without an opening>>>>> >>>>>> 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 > > >