2008/11/5 Lukas Kahwe Smith <[EMAIL PROTECTED]>:
>
> On 04.11.2008, at 23:02, Lukas Kahwe Smith wrote:
>
>>
>> On 27.10.2008, at 08:26, Kalle Sommer Nielsen wrote:
>>
>>> 2008/10/27 Lukas Kahwe Smith <[EMAIL PROTECTED]>:
>>>>
>>>> On 27.10.2008, at 06:16, Kalle Sommer Nielsen wrote:
>>>>
>>>>> 2008/10/26 Johannes Schlüter <[EMAIL PROTECTED]>:
>>>>>>
>>>>>> On Sun, 2008-10-26 at 14:32 +0100, Kalle Sommer Nielsen wrote:
>>>>>>>
>>>>>>> So, I propose its either being a "supported" feature, or simply put
>>>>>>> an
>>>>>>> deprecation notice on it (5.3) and remove it HEAD. I personally vote
>>>>>>> for the last option, as I don't think resources should be constants
>>>>>>> as
>>>>>>> they do not have the constant value even though they do on some
>>>>>>> level.
>>>>>>
>>>>>> I recently discussed the same issue on IRC, (due to #45982) we can't
>>>>>> get
>>>>>> rid of resources in constants completely as we need that for STDIN,
>>>>>> STDOU, STDERR constants.
>>>>>
>>>>> Yes I know, but still I think we should either making it a supported
>>>>> feature or restrict registering resources on define().
>>>>
>>>>
>>>> Huh, I wasnt even aware that define() supports anything but scalar
>>>> values.
>>>> At any rate I am very sure I never stumbled over code defining a
>>>> constant
>>>> with a ressource. Not a very good idea to support ressources, especially
>>>> given the obvious WTF's this causes (as you rightly pointed out). So I
>>>> see
>>>> that an E_DEPRECATED would make sense. However I am not sure about
>>>> removing
>>>> this though, which would make the E_DEPRECATED a bit odd (why deprecate
>>>> if
>>>> we do not remove?).
>>>
>>> E_DEPRECATED if we deprecated this feature, but I would be happy with
>>> an E_STRICT if this behaviour will be kept. :)
>>>>
>>
>>
>> so lets mark it as E_DEPRECATED in 5.3 and remove in 6.0, given that its
>> currently not documented (though oddly it still discourages users to not do
>> something that is not said to work "Only scalar data (boolean, integer,
>> float and string) can be contained in constants. Do not define resource
>> constants.")
>
>
> ok i guess i was too quick with my call .. but i stirred up some discussion.
>
> as the following google code search shows the "feature" is used:
> http://www.google.com/codesearch?hl=en&lr=&q=lang%3Aphp+define.*(fopen|mysql_connect)\(&sbtn=Search
>
> main use seem to be:
> 1) emulating STDOUT and STDERR when using cgi
> 2) as a pseudo "super global" to pass around db and log file handles
>
> to me 1) seems like something we might want to provide in some other way,
> while 2) does not seem like something people really need constants for. so
> imho i still think we should deprecate it .. but other people have noted
> that they prefer an E_STRICT.
>
> so lets have a quick vote here:
> 1) leave as is
> 2) raise an E_DEPRECATED in PHP 5.3 and remove in PHP 6.0
> 3) raise an E_STRICT in PHP 5.3

After thinking it over another time, Im gonna give a +1 to option 3
(raise an E_STRICT), but either way I would be happy with option 2
aswell.

>
> Also should there be some other way to get STDOUT and STDERR defined even if
> we go for 2) or 3)?
>
> regards,
> Lukas Kahwe Smith
> [EMAIL PROTECTED]
>
>
>
>



-- 
Kalle Sommer Nielsen

--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to