Op dit moment heb ik een vrij groot systeem ontworpen (CMS, Webwinkel, Administratie) en dat allemaal OOP. Er is nu echter een klant die het systeem anders wilt laten werken (functies moeten veranderd worden) maar i.v.m. updates wil ik de 'standaardscripts' niet aanpassen. Als oplossing dacht ik dus om het volgende te doen:
In /lib/ gooi ik alle classes waar in aangepast mag worden. Deze extenden de standaardclasses die in /lib/default/ staan.
Een PHP script in /lib/ ziet er dan zo uit:
<?php
require_once('default/shopItems.php');
class shopItems extends def_shopItems {
}
?>Op PHP.net heb ik gevonden dat wanneer je een functie aanmaakt in bovenstaande class het de functie vervangt in de class die je 'extend'. Echter krijg ik een wit scherm (geen foutmelding).
Voorbeeldje:
<?php
require_once('default/shopOrders.php');
class shopOrders extends def_shopOrders {
/*
MAATWERK **********
*/
function handle(){
switch($this->_params['action']){
case 'checkout':
/* MAATWERK *********! $_this->_params['lid'] */
return $this->postOrder($_SESSION['cmsUserNo_'], $this->_params['cart'], $this->_params['reference'], $this->_params['shipping'], $this->_params['payment'], $this->_params['comment'], $this->_params['coupon'], $this->_params['lid']);
break;
case 'getOrderLines':
return $this->getOrderLines($this->_params['No_']);
break;
}
}
}
?>
de functie 'postOrder' staat eveneens in dat script echter kan ik dat niet gaan posten. Deze functie staat ook in de class die 'extended' wordt.
Ik hoop dat iemand kan helpen want anders kan deze klant niet van updates genieten gezien het niet te doen is om alles handmatig te gaan knippen / plakken.