On 14 Mar 2008, at 19:21, Eric Gorr wrote:
> On Mar 14, 2008, at 3:15 PM, Eric Gorr wrote:
>> On Mar 14, 2008, at 3:10 PM, Stut wrote:
>>> On 14 Mar 2008, at 19:03, Eric Gorr wrote:
>>>> Unfortunately, such things cannot be used to wrap functions.
>>>
>>> Erm, yes they can. Try it.
>>>
>>> <?php
>>> if (rand(0,1) == 0)
>>> {
>>> function arse()
>>> {
>>> echo "arse 1\n";
>>> }
>>> }
>>> else
>>> {
>>> function arse()
>>> {
>>> echo "arse 2\n";
>>> }
>>> }
>>>
>>> arse();
>>> ?>
>>>
>>
>> Gives:
>>
>> Parse error: syntax error, unexpected T_STRING in /Users/Eric/Sites/
>> ifWrapping.php on line 3
>
> Oh, sorry, apparently there are some invisible characters in the
> text you pasted which I had to zap first. Yes, this does work as
> expected.
>
> However, try wrapping the arse function in a class.
>
> <?php
> class TestClass
> {
> if ( rand(0,1) == 0 )
> {
> function arse()
> {
> echo "arse 1\n";
> }
> }
> else
> {
> function arse()
> {
> echo "arse 2\n";
> }
> }
>
> }
>
> $myVar = new TestClass;
>
> $myVar->arse();
> ?>
In my experience there are very few valid reasons for conditionally
defining functions, and even fewer for conditionally defining methods
in a class. Maybe if you explain what you're trying to achieve we can
you find a better way.
-Stut
--
http://stut.net/