On 4/9/12 3:53 PM, "Tom Boutell" <t...@punkave.com> wrote:

>I see why you want to allow <?php at the top to be optional in 'code
>mode,' rather than disallowed in code mode. But your purpose is to
>allow legacy code to be autoloaded without knowing in advance whether
>it starts with <?php or not.
>
>But that would probably lead in practice to the use of a single file
>extension for old and new class files.
>
>And that, in turn, would lead to source code being spewed to the
>browser for all to see if a perfectly respectable autoloader circa PHP
>5.3 runs into one of these new files.
>
>This is a much more significant security issue than some of those
>mentioned previously because perfectly well-written code would display
>this behavior if someone unknowingly drops a newer library into, say,
>the lib/ folder of a Symfony 1.4 project. Ouch.


So are you saying the starting "<?php" tag should be required in "code
mode"?

If so, I'm ok with that as long as:

- "?>" is forbidden

- Text before the opening <?php tag (literal text or white-spaces) is
either ignored or throws an error instead of printing to the output buffer.

If that's not what you mean, please clarify.

Luke

>
>It would be much better for that autoloader to just ignore the file
>because it has a new extension. This way the problem is immediately
>apparent:
>
>"Hey, my class didn't load, something must be up. Oh my PHP is old
>and/or this autoloader doesn't know about .phpc files, what are they
>anyway... google google... aha, I need PHP 5.x and an updated
>autoloader. Grumble. Okay."
>
>This is a much safer outcome.
>
>On Mon, Apr 9, 2012 at 6:34 PM, Luke Scott <l...@cywh.com> wrote:
>> Tom,
>>
>> On 4/9/12 3:17 PM, "Tom Boutell" <t...@punkave.com> wrote:
>>
>>>My original goal was to stop typing <?php in pure code files. That
>>>includes at the top. I think it's entirely reasonable to achieve it
>>>with an option to the require keywords for this purpose and a naming
>>>convention to be followed by autoloaders. Keep in mind how rarely you
>>>have to change them. We're talking about code maintained by a
>>>relatively small number of very sharp developers. They can handle a
>>>few flags (:
>>>
>>>The prohibition of ?> still seems unnecessary and perhaps divisive,
>>>but if it were preferable to the majority to prohibit ?> in a pure
>>>code file, I could live with that as long as classic PHP files are
>>>also 100% supported and remain the default. I'm trying to craft a
>>>broadly acceptable compromise that still achieves the original goal of
>>>allowing people to write "just code" in a class file.
>>
>>
>> I think you can you achieve that by making "template mode" default and
>>the
>> default changeable in the php.ini file.
>>
>> Something like this:
>>
>> /*
>>    Code only, <?php at top optional, no ?>.
>>    Text before opening <?php silently dropped
>>
>> */
>>
>> require "/path/to/somefile.php", INCLUDE_CODE;
>>
>> /*
>>    Works exactly as it is now: <?php and ?> allowed.
>>    Text betweeen ?>...<?php printed to output buffer.
>> */
>>
>>
>>
>> require "/path/to/anotherfile.php", INCLUDE_TEMPLATE; // As it is now
>>
>> /*
>>    By default INCLUDE_TEMPLATE
>>    Can change default mode in php.ini to be INCLUDE_CODE if desired.
>> */
>>
>> require "/path/to/anotherfile.php"; // As it is now
>>
>>
>> Personally I would like to be able to do something like this in my auto
>> loader:
>>
>> include $file, INCLUDE_CODE & INCLUDE_SILENT;
>>
>>
>>
>> That way I can ensure pure code is being inserted and no warnings are
>> thrown if the file doesn't exist (class undefined will be thrown
>>anyway).
>>
>> I think it's important to make <?php optional at the top if you're using
>> existing or third party libraries that you can't modify. At least then
>> you'll be able to maintain backwards compatibility with most code
>>written
>> since PHP 5.
>>
>> (We don't need PHP_*. See the output of get_defined_constants() ).
>>
>> I like where this is going! Hopefully after the RFC has been finalized
>> everyone else will agree.
>>
>>
>>>
>>>On Mon, Apr 9, 2012 at 6:06 PM, Kris Craig <kris.cr...@gmail.com> wrote:
>>
>>
>> Kris,
>>
>>
>>
>>>>
>>>>
>>>> Bah, right!  That damned <?xml tag....
>>>>
>>>> I already know what everyone's reaction will be, and it is probably a
>>>>REALLY
>>>> bad idea, but I feel obligated to at least mention it:  Should we
>>>>consider
>>>> replacing "<?..." with something that doesn't conflict with anything,
>>>> perhaps starting in PHP 6?  No need to get out the torches and
>>>>pitchforks,
>>>> everyone!  As insane and problematic as that would be (i.e. BC break
>>>>with
>>>> roughly 1/3 of the internet lol), I felt as though the subject should
>>>>at
>>>> least be broached.  ;P
>>
>>
>> No need. Just keep it as <?php. It's already been well established. We
>> should ovoid overcomplicating it.
>>
>> Luke
>>
>>
>
>
>
>-- 
>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

Reply via email to