SQL verbinding gebruiken binnen class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Sander Z

Sander Z

19/04/2016 15:35:42
Quote Anchor link
Ik heb een class waarmee ik verbinding maak met mn database: mysqli_database. Die werkt helemaal prima. (In die class wordt de verbinding gemaakt mbv constanten.)
Als ik nu een andere class heb welke ook verbinding moet kunnen maken dan laat ik die de mysqli_database extenden zodat die class ook verbinding kan maken. Alleen op deze manier wordt er bij iedere class die ik op die manier laat werken een nieuwe verbinding gemaakt. Dit wil ik niet.

Is het bijvoorbeeld mogelijk om het volgende te doen:
$db = new mysql_database;
$menu = new menu($db);

Zodat de class menu gebruik maakt van de huidige verbinding?
Gewijzigd op 19/04/2016 15:37:43 door Sander Z
 
PHP hulp

PHP hulp

25/04/2024 06:01:38
 
Ward van der Put
Moderator

Ward van der Put

19/04/2016 15:45:44
Quote Anchor link
Je zou er een service locator tussen kunnen zetten, zodat de databaseverbinding een gedeelde service wordt.

>> Als ik nu een andere class heb welke ook verbinding moet kunnen maken dan laat ik die de mysqli_database extenden zodat die class ook verbinding kan maken.

Ik denk dat je bedoelt dat je de databaseverbinding doorgeeft met dependency injection (zoals in je voorbeeld), want elke klasse die de database gebruikt de databaseverbinding laten extenden, is geen goed plan.
 
Thomas van den Heuvel

Thomas van den Heuvel

19/04/2016 15:50:17
Quote Anchor link
Quote:
Dit wil ik niet.

En dat is meestal ook niet logisch waarschijnlijk. Een menu is geen (specifieker) voortborduursel van een database. Het kan wel zo zijn dat een menu een informatiebron (zoals een database) nodig heeft om zijn taken te kunnen verrichten. Maar dat maakt een menu nog geen verlengstuk van een database.

Het bovenstaande is waarschijnlijk een goed idee: je geeft het menu-object de informatie (mee) die deze nodig heeft om zijn taak uit te kunnen voeren (volgens mij staat dit principe ook bekend als dependency injection). Idealiter hoef je maar één keer een mysql_database object te creëren binnen je code. Daarnaast is er sowieso een optimalisatie onder de motorkap waarbij bestaande connecties worden hergebruikt als de connectie-parameters in de verschillende aanroepen van een connect-functie of -methode hetzelfde zijn.
 
Sander Z

Sander Z

20/04/2016 10:57:26
Quote Anchor link
Bedankt voor de info. Ik ga me er eens even in verdiepen!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.