01. marts 2007 - 15:33Der er
27 kommentarer og 1 løsning
PHP: OO, mange klasser?
Jeg har et objekt orienteret website, som er skrevet i PHP. Sitet indeholder efterhånden ca. 15 klassefiler og flere bliver løbende skrevet. Som det er nu, includerer jeg først disse klasser, når de skal bruges. Dette kan dog gode blive lidt problematisk i længden, da man kunne forestille sig at man kunne komme til at includere den samme klasse flere gange.
Mit spørgsmål er, at om det ødelægge sidens loading-time væsentligt, hvis man vælger i starten hver side at inkludere samtligt klasser? Script-sproget bliver jo oversat på serveren, så er lidt i tvivl om, om webbrugeren i den sidste ende vil kunne mærke nogen forskel?
Støv, fibre og metalliske partikler kan påvirke både uptime, levetid og driftssikkerhed. Derfor arbejder flere datacentre systematisk med contamination control.
hvis du ikke kan planlaegge dig ud af at have problemer med at inkludere de samme filer flere steder, kan du bruge include_once og require_once der loeser problemet for dig
hvis filen i en include ikke kan findes, resulterer det i en notice, mens det i en require vil resultere i en fatal error
Synes godt om
Slettet bruger
01. marts 2007 - 16:47#6
Er du ude efter hastighed saa hold dig fra include_once som er langsommere end include. I PHP5 kan du bruge __autoload til at tage dig af dine klasser.
Nu ved jeg ikke hvor mange besoegende du skal tage dig mvh, men jeg har selv koert en del sider med inkludering af alle filer i starten uden problemer - selvfoelgelig er det en smule langsommere.
Jeg er igang med at lave en ny stor portal - så der skulle helst ikke være noget galt med hastigheden. Men det er klart, at hvis vi snakker 1/50 af et sekund, så gør det ikke det store. Vil du vurdere, at jeg sagtens kan hente alle klasser ind fra start?
Hvis vi kan blive enige om, at indhentning af alle mine klasser hvad gang, ikke vil ødelægge loadtime merkant, så ser jeg ikke noget problem I at bruge __autoload?
Synes godt om
Slettet bruger
01. marts 2007 - 19:00#8
"Jeg er igang med at lave en ny stor portal" > tror ikke at det med klasserne skal være dit hovedfokus på hastighed før du står med problemet med for meget trafik... :/
At bruge __autoload er vel netop at hente alle klasserne på en gang?
Synes godt om
Slettet bruger
02. marts 2007 - 08:52#12
Nej... det er at hente klasser naar der er brug for dem...
<? //erklaer autoload function __autoload($className) { //include class logic! }
//nu kalder vi en klasse der ikke er erklaeret. $object = new fooObject; //foer ovenstaaende linie vil __autoload() blive kaldt, $object1 = new fooObject; //__autoload() vil ikke blive kaldt her for nu er fooObject allerede blevet erklaeret! ?>
I mit script kører jeg denne linie: $designClass->top();
I toppen af koden af jeg denne funktion: function __autoload($className) { echo "henter:".$className; $className = substr($className, 0, strlen($className)-5); include("/classes/".$className.".php"); } Jeg har lavet den substr, sådan at designClass bliver til design, da det er navnet på klassen.
Jeg får en "Undefined variable: designClass"..hvordan kan det være?
Synes godt om
Slettet bruger
04. marts 2007 - 22:15#20
Prøv med lidt debugging... kan ikke umiddelbart sige hvor det går galt...
Bliver __autoload() kaldt? Bliver den ønskede fil inkluderet?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.