Re: More than one values returned?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jim Lucas wrote:
> Nick Stinemates wrote:
>> Nathan Rixham wrote:
>>> Robert Cummings wrote:
>>>> On Mon, 2008-02-18 at 21:09 -0600, Larry Garfield wrote:
>>>>> On Monday 18 February 2008, Nick Stinemates wrote:
>>>>>
>>>>>>>> I have found, however, that if I ever need to return /multiple/
>>>>>>>> values,
>>>>>>>> it's usually because of bad design and/or the lack of proper
>>>>>>>> encapsulation.
>>>>>>> You mean you've never had a function like getCoordinates()? Or
>>>>>>> getUsers(), or any other of a zillion perfectly valid and
>>>>>>> reasonable
>>>>>>> functions that return multiple values as an array? Wow, how odd!
>>>>>>>
>>>>>>> Cheers,
>>>>>>> Rob.
>>>>>> getCoordinates() would return a Point object
>>>>>> getUsers() would return a Group  object...
>>>>>>
>>>>>> Not rocket science ;)
>>>>> I wouldn't consider an array of user objects to be "multiple
>>>>> things".  I consider it a single aggregate thing, and return arrays
>>>>> all the time.  That's conceptually different from wanting two
>>>>> separate return values from a function, which is indeed conceptually
>>>>> icky.
>>>> Yes, an aggregate is comprised of multiple things usually. Hence when
>>>> decomposing the concept you are indeed returning multiple values--
>>>> both
>>>> points of view are valid. If you receive a parcel of 100 pens. I can
>>>> say, "has the parcel arrived yet" (one entity) or "have the pens
>>>> arrived
>>>> yet" (multiple entities).
>>>>
>>>> At any rate, the O.P. wanted to return multiple values called $x
>>>> and $y.
>>>> It seems quite reasonable to assume he was returning something akin to
>>>> coordinates but didn't know how to do so by binding them in an
>>>> aggregating structure such as an array, or if you wish, an object.
>>>>
>>>> Cheers,
>>>> Rob.
>>> seriously, whats wrong with returning an array? half the standard php
>>> functions return array's, therefore at least half of php has been
>>> designed badly..?
>>>
>>> ps: when working with co-ordinates / GIS data you should really be
>>> using  wkb data instead, it's much faster. [unpack]
>>>
>> What's wrong with it? Hmm..
>>
>> Half of PHP functions DO return arrays, I'll grant you that. The reason?
>> It's untyped. If PHP were a typed language, and it still returned arrays
>> for a lot, I definitely think it would be designed poorly.
>>
>> At any rate, returning an array from your Objects increases the burden
>> and shifts it to the client of your API. For instance, if we take an
>> example mentioned above *getUsers()* which returned an arbitrary number
>> of User objects you could potentially use it like this.
>>
>> userupdater.php
>>
>> <?php
>>     $x = Users::getUsers($somefilter)
>>     foreach ($x as $user) {
>>               $user->update();
>>     }
>> ?>
>>
>> Keep in mind. You'll have to rewrite that functionality in multiple
>> areas. As opposed to:
>>
>> <?php
>>
>>    $x = Users::getGroup($somegroup); // returns a group of users
>>    $x->update(); // can be reused wherever instead of having to loop
>> through every user on the client side.
>> ?>
>>
>> I hope you can see past my (basic) example to understand where I am
>> headed with this.
>>
>
> I would, and do, use this magic :)
>
> Users::GetGroup($somegroup)->update();
>
> Simple, Even less typing then yours :p
>
:P. I use that method, too.

It really sucks for debugging though, because what if
GetGroup($somegroup) returns a null or unexpected value?

Yeah, it sucks. But, doesn't occur enough to be too annoying ;)

-- 
==================
Nick Stinemates (nick@xxxxxxxxxxxxxx)
http://nick.stinemates.org

AIM: Nick Stinemates
MSN: nickstinemates@xxxxxxxxxxx
Yahoo: nickstinemates@xxxxxxxxx
==================

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux