On Fri, Apr 18, 2008 at 10:25:29AM -0600, Nathan Nobbe wrote: > On Thu, Apr 17, 2008 at 5:43 PM, Nick Stinemates <nick@xxxxxxxxxxxxxx> > wrote: > > > On Thu, Apr 17, 2008 at 10:05:11AM +0200, Michael Preminger wrote: > > > Hello! > > > > > > Seems that PHP gets more and more object oriented, which is good. > > > > > > I am now running a course in PHP, using PHP 5, where we are going to > > > use the *DOM* interface. I am trying to teach them good OO practices, > > > meaning that we insistently hide properties and expose them as get or > > > set methods. > > > > Get/set methods are more often than not breaking encapsulation and > > should be avoided (unless purposefully designing Model object or > > something similar.) > > > > egh? we had a massive argument about this last year, but if u ask me data > hiding is an integral part of encapsulation; therefore i agree w/ Michael. > Data Hiding IS Encapsulation. But, you have to agree, <?php class Lol { private $bar; public function getBar() { return $bar } public function setBar($bar) { $this->bar = $bar} } ?> Is no different than: <?php class Lol { public $bar; } ?> Here's a more thought out argument from http://www.javaworld.com/javaworld/jw-09-2003/jw-0905-toolbox.html : > A fundamental precept of OO systems is that an object should not expose any of its implementation details. This way, you can change the implementation without changing the code that uses the object. It follows then that in OO systems you should avoid getter and setter functions since they mostly provide access to implementation details. > > To see why, consider that there might be 1,000 calls to a getX() method in your program, and each call assumes that the return value is of a particular type. You might store getX()'s return value in a local variable, for example, and that variable type must match the return-value type. If you need to change the way the object is implemented in such a way that the type of X changes, you're in deep trouble. -- Nick Stinemates (nick@xxxxxxxxxxxxxx) http://nick.stinemates.org -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php