On Wed, 2008-04-16 at 12:20 +0100, Tony Marston wrote: > The term "abstract" has been adequately defined in this thread, so I won't > repeat it. > > However, there is one important aspect of the term "interface" which I think > that most people seem to miss - it is not necessary to use the term > "interface" in order to have an interface. Let me explain with a code > sample: > > class foo { > function something ($arg1, $arg2, ...) { > .... > } // end something > } // end class foo > > Here I have defined a class "foo" with a method called "something". This > method as it stands is already an interface (as in Application Program > Interface or API) and does not require anything extra for it to be accessed. > All I need is the following: > > $foo = new foo. > $result = $foo->something($arg1, $arg2, ...); > > In order to include the term "interface" in the code you need something like > the following (which is taken from the PHP manual): > > // Declare the interface 'iTemplate' > interface iTemplate > { > public function setVariable($name, $var); > public function getHtml($template); > } > > // Implement the interface > // This will work > class Template implements iTemplate > { > private $vars = array(); > > public function setVariable($name, $var) > { > $this->vars[$name] = $var; > } > > public function getHtml($template) > { > foreach($this->vars as $name => $value) { > $template = str_replace('{' . $name . '}', $value, $template); > } > > return $template; > } > } > > All that extra code for absolutely no benefit! It is possible to define an > interface (as in API) without actually using the term "interface", so IMHO > the term "interface" is totally redundant and a waste of time. While I agree that Interfaces are mostly a lot of extra code, I have to also say that they are there primarily to enforce a contract between the user of the interface and their classes that claim to implement the interface. If someone creates a class that "Implements" an interface, then when I have to go edit or use the class, it had better damn well implement what it says it does :) Cheers, Rob. -- http://www.interjinn.com Application and Templating Framework for PHP -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php