11. maj 2003 - 22:03Der er
10 kommentarer og 1 løsning
Klasser vs. funktioner
Jeg har spekuleret lidt over det og kigget rundt på Eksperten, men har vist ikke helt forstået, hvorfor det er så smart med klasser frem for funktioner.
Tilsyneladende kræver det mere kode at have klasserne, end hvis man bare nøjes med funktionerne - i hvert fald skal man altid lave et $db = new obj(); og bagefter referere til dette objekt via $db->funktionen();
Det næste spørgsmål er, hvordan klasserne skal gemmes. Det er jo en samling funktioner, og det vil formentlig være smart at have en mysql-klasse. Men skal man så gemme denne fil for sig, eller skal man putte alle klasserne i en fil? Hvis de skal gemmes for sig, og begrundelsen for klasserne er for overskuelighedens skyld, kunne det måske være lettere bare at have funktionerne i filerne (så er overskueligheden vel den samme)?
Endelig hvis man skal bruge klasser, hvilke umiddelbare klasser kunne man så forestille sig ville være nødvendige for et simpelt, dynamisk websted?
mysql --> til databaseforbindelser skriv_html --> til sidehoved og sidefod formular --> til skrivning af formularer validering --> til validering af formularer
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Det er jo en større diskussion. Men een forskel er hvor data befinder sig. I en klasse er det i klassen selv, du kan have data/variabler relevante for klassen. Har du kun funktioner, skal du have variabler med i hvert kald - eller bruge globale variabler.
Du vil derfor med en korrekt lavet MySql klasse, uden videre kunne oprette to instanser til hver sin database(server)
mysql -> her kan klasser være en god ide. se erikjacosen's ovenfor
skriv_html -> er da vist nemmere og mere overskueligt med bare en include foroven i siden og en forneden.
formular & validering -> bliver enormt stor hvis du prøver at lave det som klasser, så skal der jo i klassen tages hensyn til alt hvad du kan forstille dig der nogensinde kan blive brug for. Jeg ville skrive dem i hånden.
Jeg kan kun tale af egen erfaring. Som erikjacobsen siger, giver det noget mere frihed og fleksibilitet mht. data shared på tværs af kald til objektet.
Jeg plejer at lave nogle klasser der tager sig af flg.:
html -> Klasse til printning af header, footer og diverse common html-ting. db -> Klasse til at varetage database-kald, errorhandling osv. misc -> Diverse klasse. Her plejer jeg at have nogle nyttige funktioner som ikke hører ind andre steder (se nedenfor)
Herudover plejer jeg at oprette klasser alt efter befindende - lad os sige det drejer sig om et website til nogle brugere og nogle nyheder. Jeg ville så oprette en klasse, 'brugere', og heri gemme alle funktioner til listning af brugere, oprettelse osv. Derudover en klasse, 'nyheder', til varetagning af visning, listning etc. af nyheder.
Min opbygning plejer at se ud som flg.:
Config-fil, heri inkluderer jeg og opretter mine klasse-filer til objekter. Denne fil bliver inkluderet i alle andre filer vha. htaccess.
Så kan man på sine sider nøjes med 2 linjer - så har du printet hele din side.
Desuden kan jeg anbefale dig at kalde dine objekter noget du ikke lige vil komme til at bruge andetsteds, f.eks. : "$_html = new html();" - altså underscore i objektnavnet.
At skrive header og footer ud med PHP er overkill, der meget sjældent kan anbefales, da det i langt de fleste tilfælde slider unødigt på serveren. Includes er som oftest at foretrække - ikke mindst på stor sites (eller webhoteller med mange sites), hvor performance har stor betydning.
I det hele taget bør man stadig bruge statiske filer i så stor udstrækning, som muligt, da det giver betydelig bedre performance.
Til gengæld er template-systemer meget lækre at arbejde med. Jeg har selv skrevet mig eget (da Smarty efter min mening er ekstremt overkill, og ikke lige har det 'interface' jeg skal bruge), og det letter arbejdet betydeligt.
Jeg plejede at bruge statiske includes, men det blev hurtigt alt for besværligt når jeg skulle arbejde med flere forskellige sites. Men hey, hver sin favorit. ;)
Tak for hjælpen. Smid lige nogle svar, hvis I vil have point.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.