> Derick Rethans wrote: > > On Thu, 3 Feb 2005, Sebastian Bergmann wrote: > > > >>Derick Rethans wrote: > >>>This adds operator overloading to user classes? > >> Yes, have a look at Johannes' Complex example [1]. > > > > Okay, mega Yuck then. Although it looks cool, I consider it as a bad > > practise. It confuses the hell out of people that they can add two > > objects. Use C++/Java if you want this... > > I couldn't agree more. I like PHP not because it is the most compact or > flexible of all languages but because the syntax is quite simple. > > Try explaining someone who just learned PHP and doesn't know your code > where to find the implementation of > $c = $a + $b; > as opposed to > $c= $a->add($b); > or > $c = Complex::add($a, $b);
If $a is an object of a class, then they would both be in the class definition. One is called "add", and the other is called "operator+". What's the problem with that? > Another little thought how confusion can easily happen with operator > overloading: $b = $a + 42; works but $b = 42 + $a; doesn't, i.e. the > overloaded addition isn't commutative. It would if operator overloading was allowed on free functions (as it is in C++). E..g: function operator+(complex $a, complex $b) { return new complex($a.real + $b.real, $a.imag + $b.imag); } The binary operators are recommended to to free functions, for this reason, in C++. Regards, Terje -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php