• Reset your password

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log in
Hjem
Linuxin 2025

Breadcrumb

  • Hjem
  • forums
  • OOP med PHP?

Hvad kan du med 100% sikkerhed sige, at du har stemt?

Valgmuligheder
Af evang.dk | 03.11.2009 21:24

OOP med PHP?

Programmering

jeg har et spørgsmål til php-oop?



hva' synes I?

jeg har en klasse der etabler forbindelse med database og varetager alle kald.

så har jeg en anden klasse der håndterer brugere på siden og den skal naturligvis benytte sig af database-klassen... men hvordan?



Hvad er mest korrekt?

1. bruger-klassen arver database-klassen

2 brugerklassen bruger funktioner/metoder i database-klassen?

  • Log in to post comments

Kommentarer7

15 år 6 måneder siden

Permalink

Indsendt af marx den 3. november 2009 kl. 21:50

Permalink

Re: OOP med PHP?

Det kommer an på hvad din brugerklasse skal.



Hvis din brugerklasse specifikt handler om databaseintegration med dine brugere, og at alle eller næsten alle operationer med brugerklassen skal igennem databasen, så giver det mening hvis den arver databaseklassen.



Hvis brugerklassen derimod også skal lave ting der ikke er fra databasen, på lige fod med database-operationerne (fx hvis den både skal håndtere database-operationer og session-data om den nuværende bruger), så giver det bedre mening at den kalder metoder fra databaseklassen snarere end at nedarve den, og det samme hvis du bruger en eventuel session-/cookie-klasse.

  • Log in to post comments

15 år 6 måneder siden

Permalink

Indsendt af evang.dk den 3. november 2009 kl. 22:22

Permalink

Re: OOP med PHP?

principielt bør man som klasse vel arve fra de klasser man skal bruge... men gælder det også i klasser der ikke umiddelbart ligner hinanden i brug/funktion?



kan man iøvrigt ikke kun arve fra en klasse i php?

  • Log in to post comments

15 år 6 måneder siden

Permalink

Indsendt af Kresten Kjaer den 3. november 2009 kl. 22:39

Permalink

Re: OOP med PHP?

#0 Du kan kigge på hvordan flow3 eller doctrine håndterer database abstraktion.

  • Log in to post comments

15 år 4 måneder siden

Permalink

Indsendt af Emc2 den 20. januar 2010 kl. 21:18

Permalink

Re: OOP med PHP?

Nej det er noget pjat det der! Du skal ikke nedarve en klasse bare fordi du skal bruge den ... og slet ikke saadan som det bliver beskrevet her.



Derudover vil det jo betyde at du har en ny forbindelse til databasen hvergang du haandterer et database-objekt. F.eks. hvis du har et objekt til at haandtere brugere og et andet til at haandtere gaestebogsindlaeg med saa vil de have hver sin forbindelse til databasen ... det giver problemer.



Den rigtige maade at goere det paa er noget ala:



class Database()

{



// Stuph

}



class Brugere()

{

private $db;



public function __construct($db)

{

$this->$db=$db;

}

}



$db = new Database();



$bruger = new Brugere($db);





Haaber du fangede ideen i det ... det er saadan man goer hvis det skal goeres rigtigt :)

  • Log in to post comments

15 år 4 måneder siden

Permalink

Indsendt af Anonym7 den 21. januar 2010 kl. 00:00

Permalink

Re: OOP med PHP?

Som udgangspunkt så skal vi lige slå et *helt* basalt OOD koncept fast:

"Favour composition over inheritance".



Altså, undgå at nedarve som udgangspunkt med mindre du vitterligt kan forsvare det. I mange tilfælde vil komposition (det at instantiere en klasse som en lokal variabel inde i sig selv) eller aggregering (at benytte en instans af en klasse som er instantieret andetsteds) give lige så meget mening.



Dette råd giver specielt mening såfremt man snakker om single-inheritance sprog så som Java/C# - muligvis PHP, jeg er for doven til at slå det op.

(Basalt set, kan du kun arve fra én klasse og eventuelt implementere et antal interfaces, så har du med et single-inheritance sprog at gøre).



Hvorfor ? Well, igen, hvis det er et single-inheritance sprog så har du ikke opbrugt din ene værdifulde mulighed fra at arve fra en klasse, endvidere har du med komposition bedre kontrol over din klasses interface.

Såfremt du arver kan du ALDRIG indskrænke interfacet (dvs. skifte en public metod til private) - kun udvide det.

Derfor kan andre nu benytte din klasse og kalde metoder som du måske ikke ønsker de skal kalde direkte.

Ergo har du ødelagt indkapslingen af din kode - hvilket er fy-fy :)

  • Log in to post comments

15 år 4 måneder siden

Permalink

Indsendt af kazm den 22. januar 2010 kl. 01:20

In reply to Re: OOP med PHP? by Anonym7

Permalink

Re: Re: OOP med PHP?

Off topic: Har du lige haft kurset Software Arkitektur på Aarhus Universitet med Henrik Bærbak som forelæser? Eller er du evt ham? ;)

  • Log in to post comments

15 år 4 måneder siden

Permalink

Indsendt af Anonym7 den 22. januar 2010 kl. 21:20

Permalink

Re: OOP med PHP?

Nope :) Men har haft 2 andre kurser på ITU i KBH som har fokuseret dels på OO softwarekonstruktion, dels på design, patterns og principper (samt self UML etc).



Derfor ;)

  • Log in to post comments

Svar søges

Test 0
Den er go 0
Vil du have et sikrere og mere privat internet? Du skal blot installere Vivaldi-browseren med Proton VPN understøttelse! 0
14. februar = I Love Free Software Day 0
Lokal fil-deling - for de dovne. 0

Seneste aktivitet

2 stk Jolla C2 sælges 2
"Intet realistisk alternativ" - mig i r*ven 4
Test 2
Det første forumindlæg efter installation af Forum-modulet 8
Vanilla OS 12
Nye forum-indlæg viser sig kun 1 gang 1
Vil alle forumindlæg vise sig to gange 1
Hjælp til remote terminal vindue? 3
PCLinuxOS 19
Kan ikke boote på installation 24
80-20 reglen 1
Skærmlys fader ud på min bærbare 8
32 bit distro på max 700mb der stadig understøttes 26
Har vi nogen Linux konsulenter i Slagelse området? 3
Virkelig 7
gnome-software? 3
Archer T2U AC600 Wireless Dual Band USB Adapter 26
En farverig APT 3.0 udgivelse imponerer med sine nye funktioner 2
Unix's fødsel 2
Linux Mint 13

Copyright © 2025 Company Name - All rights reserved

Developed & Designed by Alaa Haddad