[ sojic @ 02.05.2004. 23:42 ] @
Kako se ravijaju velike php projekte? Znam da se to radi sa modulima. Ako moze jedan primer, kako da kreiraju moduli, i kako ih koristiti.
[ webmaster1 @ 03.05.2004. 15:24 ] @
Konkretan odgovor na pitanje ne znam,ali ove gotove projekte(webmail,forum,smarty) ljudi rade preko klasa,tj. objektno programiranje.
E sad,dal je to ista stvar -ne znam,a ako neko zna, neka napise, pa da i ja nesto naucim
[ Ilija Studen @ 03.05.2004. 19:17 ] @
Pri radu na vecim projektima koristi se OOP (objektno-orijentisano programiranje) koje obezbedjuje niz prednosti kao sto su bolja organizacija koda, lakse odrzavanje itd. PHP5 donosi novi objektni model tako da se vec sada moze koristiti za vece projekte (rekoh vece, za velike projekte i projekte koji rade sa osetljivim podacima ipak treba odabrati "punokrvniji" jezik).

Modularnost sistema zavisi od nacina na koji je implementiras tj. ne postoji neko opste pravilo kako se to pravi ali su se neka resenje pokazala kao bolja od ostalih.

Posto je PHP skript jezik neke stvari je mnogo lakse uraditi. Na primer, koristis factory model i na osnovu imena modula konstruises objekat klase koja nosi ime tog modula. To je jako jednostavno jer mozes da uradis:

Code:
function produce($module) {
  include_once _SOME_PATH . $module . '.class.php';
  if(class_exists($module)) {
    $obj = new $module();
    if($obj instanceof ModuleInterface) {
      return $obj;
    } else {
      return false;
    }
  }
}


S tim da klasa modula moze biti ovakva:

Code:
interface ModuleInterface {
  
  ...

}

class sampleModule implements ModuleInterface {

  ...

}


NAPOMENA: Ovaj kod je kucan "iz glave" i ima propusta (recimo, pri include ne proverava da li fajl postoji i slicno) i mozda ima neke greske, ali princip je bitan :)

U strogo tipiziranim programskim jezicima ovo ne mozes da uradis na taj nacin jer kompajler mora tacno znati s cim ima posla pre nego sto mozes da konstruises objekat. Ali i tu ime par caka, ali o tom po tom.

Duga prica... Treba malo bolje da se upoznas sa principima objektno orijentisanog programiranja pre nego sto pocnes da radis nesto ozbiljnije.

Pozdrav