Avatar billede lsolesen Nybegynder
11. maj 2003 - 22:03 Der 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
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 22:09 #1
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)
Avatar billede jakoba Nybegynder
11. maj 2003 - 22:16 #2
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.

mvh JakobA
Avatar billede lsolesen Nybegynder
11. maj 2003 - 23:07 #3
jakoba > Jeg tænkte jo nok, at det ville være lettere med en include foroven og forneden. Er der andre synspunkter på dette emne?

HVad med placeringen af klasserne. Bør de være i forskellige filer eller bare sættes sammen i den samme fil?
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 23:08 #4
Det med HTML: smarty.php.net - overvej brugen af et template-system
Avatar billede erikjacobsen Ekspert
11. maj 2003 - 23:09 #5
Een klasse pr fil: du opnår bedst mulighed for genbrug
Avatar billede madd Nybegynder
11. maj 2003 - 23:13 #6
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.

/mattias
Avatar billede madd Nybegynder
11. maj 2003 - 23:16 #7
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.
Avatar billede bearhugx Nybegynder
11. maj 2003 - 23:24 #8
madd >> dette er et lidt "Off-topic" spørgsmål - men du skriver
"Denne fil bliver inkluderet i alle andre filer vha. htaccess."

Hvordan kan man lave automatisk inkludering via htaccess ... (er lidt grøn, hvad angår htaccess)
Avatar billede olebole Juniormester
11. maj 2003 - 23:24 #9
<ole>

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.

/mvh
</bole>
Avatar billede angelod Novice
12. maj 2003 - 02:50 #10
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. ;)
Avatar billede lsolesen Nybegynder
27. juni 2003 - 09:53 #11
Tak for hjælpen.
Smid lige nogle svar, hvis I vil have point.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester