This is a discussion on conditional "implements" within the PHP Language forums, part of the PHP Programming Forums category; Hi there! Currently i'm thinking about how to solve this problem: if (t3lib_div::int_from_ver(phpversion())<5000000) { // php4 class ...
|
|||||||
| FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
|
|||
|
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 GPG-Key: http://www.camlann.de/key.asc Fingerprint: 4F50 19BF 3346 36A6 CFA9 DBDC C268 6D24 70A1 AD15 |
|
|||
|
On Jun 28, 3:36 pm, Christian Welzel <gaw...@camlann.de> wrote:
> 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 > > GPG-Key: http://www.camlann.de/key.asc > Fingerprint: 4F50 19BF 3346 36A6 CFA9 DBDC C268 6D24 70A1 AD15 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() { if(t3lib_div::int_from_ver(phpversion())<5000000) return new tx_lib_object(); else 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 } } |