Re: interface inheritance

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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:
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!

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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux