conditional "implements"

Do you have a question? Post it now! No Registration Necessary.  Now with pictures!

Threaded View
Hi there!

Currently i'm thinking about how to solve this problem:

if (t3lib_div::int_from_ver(phpversion())<5000000) {
   // php4
   class tx_lib_object extends tx_lib_selfAwareness
} else {
   // php5
   class tx_lib_object extends tx_lib_selfAwareness implements ArrayAccess, Iterator

The question is now how to make this conditional "implements" in php?
Of cause i do not want to copy the code for both php versions and then
switch between the whole classes.

 MfG, Christian Welzel aka Gawain@Regenbogen

  Fingerprint: 4F50 19BF 3346 36A6 CFA9 DBDC C268 6D24 70A1 AD15

Re: conditional "implements"

Quoted text here. Click to load it

Create two different classes (the PHP5 version which extends the PHP4
version and implements the interfaces) then instantiate the proper one
using some sort of factory method.  Other than the fact that the PHP5
version implements your interfaces, the classes will behave in exactly
the same way.  For example:

class tx_lib_object extends tx_lib_selfAwareness {
    //All the tX_lib_object methods

    //The factory:
    public static factory() {
            return new tx_lib_object();
            return new tx_lib_object_php5();

if(t3lib_div::int_from_ver(phpversion())>=5000000) {
    class tx_lib_object_php5 extends tx_lib_object implements
ArrayAccess, Iterator {
        //all the methods to implement ArrayAccess and Iterator

Site Timeline