On Fri, Apr 18, 2008 at 10:25:29AM -0600, Nathan Nobbe wrote: > On Thu, Apr 17, 2008 at 5:43 PM, Nick Stinemates <[EMAIL PROTECTED]> > 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 ([EMAIL PROTECTED]) http://nick.stinemates.org -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php