Re: interface inheritance
| From: | Jochem Maas | Date: | Mon, 28 Jan 2008 12:07:22 +0000 |
| Subject: | Re: interface inheritance | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-268192@lists.php.net to get a copy of this message | ||
Nathan Nobbe schreef:
all, previously, on this list and elsewhere, i have raised the topic of interface inheritance, lamenting that php is void of the feature. to my utter amazement i discovered that php does in fact support interface inheritance, reading through some of Marcus Boergers' code in SPL.. i noticed RecursiveIterator extends Iterator, which is an internal interface (part of the zend engine), so i thought to myself, perhaps only internal interfaces can be extended, but then a quick test proved my suspicions wrong. in fact, interfaces can even extend multiple parent interfaces, just like java (*ducks*). here is the sample code so you can see for yourself: <?php interface Somethingable {nice bit of info! as an aside, I often use php -r to test snippets like this e.g.: $> php -r 'echo "foo!";' very handy and saves having to create a file everytime you test something, it does mean your forced to use double quotes only in the code (otherwise the shell misinterprets). I recommend using double quotes in snippets you post in order to make it easier for people to quickly test your gems for themselves :-)public function doSomething();} interface Crazyfiable {public function getCrazy();} interface Extendable extends Somethingable, Crazyfiable {public function extend();} class SuperClass implements Extendable {public function doSomething() { echo 'i did something ..' . PHP_EOL; }public function extend() { echo 'i extended something..' . PHP_EOL; }public function getCrazy() { echo 'im a crazy bastard now!' . PHP_EOL; }} /* * TEST HERE */ $sc = new SuperClass(); $sc->doSomething(); $sc->extend(); $sc->getCrazy(); ?> and the output: nathan@trident /usr/share/php5/splExperiment/tests $ php testInterfaceInheritence.php i did something .. i extended something.. im a crazy bastard now! i for one am quite excited. heres to happy adventures in oop-land w/ php!
-nathan