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 {
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:
[EMAIL PROTECTED] /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!
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 :-)
-nathan
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php