On Jan 19, 2010, at 5:54 PM, Alain Williams wrote:
>>> $eep->oop()->ork()->ah()->ah();
>>>
>>> the newcomer will have to spend significant time rummaging around the
>>> source code to figure out what classes are involved.
>> As opposed to:
>> $oop = $eep->oop();
>> $ork = $oop->ork();
>> $ah = $ork->ah();
>> $ah2 = $ah->ah();
>>
>> where it instantly becomes crystal clear! Come on, this argument of "I
>> could read any code without ever knowing anything about anything but you
>> feature broke it" is getting really stale. You couldn't, and the feature
>> changed nothing.
> +1
>
> At least with $eep->oop()->ork()->ah()->ah() you don't have stray/unwanted
> variables hanging round to confuse (or be misused) later.
+1
It also supports the "allocation is not initialization" (or anti-RAII) pattern
found in languages like Objective-C:
Objective-C:
String *s = [[String alloc] initWithFormat:@"I'm a little teapot, %@ and %@",
@"short", @"stout"];
PHP:
$s = (new String)->sprintf("I'm a little teapot, %s and %s", "short", "stout");
(Obviously a very, very contrived example, meant only to illustrate the
pattern.)
-- Gwynne
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php