Sigh, I guess you're right...
But I think a better solution is to wrap strings in a String object
Thanks for your input!
Brian White wrote:
> I think you are going to have to live with it.
>
> Functional overloading only really makes sense in strongly typed
> languages, and I bet is a bugger to implement in a name based
> scripting language so I don't think you are goign to get it.
>
> What I have sometimes wished for was that all objects and arrays
> were passed around as pointers by default, with the ability
> to create a copy when required, but that is such a fundamental
> change that I doubt if it will happen, and there are probably
> goo reasons not to ( have I ever told people how much I like
> Python ... )
>
> Maybe you are just going to have to bite the bullet and have
> an "AddRef" method......
>
>
> At 04:28 17/10/2001 +0200, SafeV wrote:
>
>> Someone, have a go at this!
>>
>> I have encountered a very troublesome problem, which I don't see how
>> to solve in an elegant way, since PHP doesn't support method overloading.
>>
>> Suppose my class is, kind of a tree, like:
>>
>> class A {
>> var $children;
>>
>> function A() {
>> $this->children = array();
>> }
>>
>> // I want this to accept both objects and strings etc.
>> // IE. mixed
>> function add($child) {
>> $this->children[] = $child;
>> }
>>
>> function printStuff() {
>> foreach ($this->children as $child) {
>> if (is_object($child))
>> $child->printStuff();
>> else
>> echo $child;
>> }
>> }
>> }
>>
>> Now this is fine:
>>
>> 1 $obj1 = new A();
>> 2 $obj2 = new A();
>> 3 $obj1->add("Something");
>> 4 $obj2->add(", something else");
>> 5 $obj1->add($obj2);
>> 6 $obj1->printStuff();
>>
>> and prints out "something, something else"
>>
>> But if I swap lines 4 and 5 it only prints out "something".
>> Obviously, the add method of $obj1 only receives a copy of $obj2, and
>> if I try to add something to $obj2 afterwards, even thought it's
>> supposed to be hooked with $obj1, it will "disappear".
>>
>> For objects only I could solve this with declaring add() like:
>> function add(&$child) {
>> $this->children[] = $child;
>> }
>> So it receives a reference of the object, but then I can't add a
>> string (fatal error, cannot pass string as reference), or an integer
>> or double, for that matter! And I really don't want to use different
>> method names!
>>
>> I don't have full control over the reference stuff in PHP, does anyone
>> know how I can fix this? Or a workaround?
>>
>> Thanx!
>>
>>
>> --
>> PHP General Mailing List (http://www.php.net/)
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>> To contact the list administrators, e-mail: [EMAIL PROTECTED]
>
>
> -------------------------
> Brian White
> Step Two Designs Pty Ltd - SGML, XML & HTML Consultancy
> Phone: +612-93197901
> Web: http://www.steptwo.com.au/
> Email: [EMAIL PROTECTED]
>
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]