login  Naam:   Wachtwoord: 
Registreer je!
Scripts > PHP > Database tools > [Class] Meerdere MySQL connecties


Reacties op het script [Class] Meerdere MySQL connecties

Offline  avdg
Gepost op: 15 maart 2010 - 00:41
PHP gevorderde



Ik wil niet vervelend doen, maar deze script lijkt me veel te abstract, een paar wijzigingen en je kan eigenlijk een lege class gebruiken.

PHP zelf heeft zo een lege class ingebouwd, al is die amper gedocumenteerde stdClass.

Anyway: demo met stdClass
  1. <?php
  2. $connections = new stdClass;
  3. $connection->connection1 = mysql_connect(/* blah */);
  4. $connection->connection2 = mysql_connect(/* another blah */);
  5. $connection->connection3 = mysql_connect(/* last blah */);
  6.  
  7. mysql_query(/* blah query*/, $connection->connection1);
  8. mysql_query(/* blah stuff */, $connection->connection2);
  9. mysql_query(/* last blah query */, $connection->connection3);


stdClass is dus eigenlijk een leeg object, waar je random data aan kan koppelen. Dat is dus ongeveer vergelijkbaar als een objecte met de vrijheid van een array.

De databaseConnection class doet ook bijna niets dan het vasthouden van 1 db instance

Conclusie: leuk script, maar heeft amper een bijgevoegde waarde

Offline  Joost
Gepost op: 15 maart 2010 - 11:48
PHP expert



Ik weet wat stdClass is en kan, en als ik geen meerwaarde in mijn script had gezien had ik het niet gebruikt.

Teneerste kent jouw voorbeeld geen enkele error afhandeling, wat het imo al niet te gebruiken maakt. Daarnaast kun je hier veel gemakkelijker extra functies aan toevoegen met overerving en polymorfisme. Als een project groot wordt kan het wel zo complex worden dat er wel degelijk nut zit in de klasse (al dan niet met een uitbreiding).

avdg schreef:
De databaseConnection class doet ook bijna niets dan het vasthouden van 1 db instance
Ja, dus? Een database connectie kan je prima zien als een entiteit opzich.


Als je er geen meerwaarde in ziet, gebruik je het niet. Maar om dan een 1 te geven zonder enige kritiek op de code of wat dan ook te geven, beetje kinderachtig.

Offline  Ibrahim
Gepost op: 15 maart 2010 - 19:32
PHP expert



@Joost zijn laatste alinea:

Hij gaf kritiek en hij gaf code, dus vind ik zijn score van 1 rechtvaardig. Het is in zijn recht zo te stemmen.

@polymorfisme:
Sinds wanneer heeft PHP polymorphism ?

Offline  Joost
Gepost op: 15 maart 2010 - 19:42
PHP expert



Ibrahim schreef:
@Joost zijn laatste alinea:

Hij gaf kritiek en hij gaf code, dus vind ik zijn score van 1 rechtvaardig. Het is in zijn recht zo te stemmen.

Je hebt gelijk, dat was wat kortzichtig van mezelf. excuses.
Ibrahim schreef:
@polymorfisme:
Sinds wanneer heeft PHP polymorphism ?
Voor mij, sinds ik dat geleerd heb uit Larry Ullman: PHP5 voor gevorderden. en Arjan Burgen en Wouter Tengeler: PHP5. Ik leg het ook uit in mijn eigen tutorial: http://www.site...lymorfisme

Polymorfisme is een begrip uit OO die dus, zoals ik heb geleerd, ook toepasbaar is in PHP.

Offline  Ibrahim
Gepost op: 16 maart 2010 - 16:23
PHP expert



Overerving en polymorphism zijn twee verschillende dingen hé. Poly staat voor meer, dus meerdere parents waar je een class mee kunt extenden:

  1. <?php
  2.  
  3. class Polo extends Volkswagen, Auto, Voertuig {
  4. // nu heeft de volkswagen polo toegang tot de methods van volkswagen, auto en voertuig
  5. }


Een beetje domme voorbeeld, maar zo zie je wat ik bedoel.

Offline  Joost
Gepost op: 16 maart 2010 - 17:11
PHP expert



Nee, dat is geen polymorfisme. Dat is Multiple Inheritance. Polymorfisme is, even een simpel voorbeeldje, dat twee klassen eenzelfde functie hebben die allebei een andere uitwerking hebben. Deze 2 klassen zijn meestal afgeleid van een andere klasse. Een goed voorbeeld staat op wikipedia: http://en.wikip...amming#PHP
Een artikel over Polymorfisme in php staat hier: http://www.devs...lymorphism/

Offline  Raze
Gepost op: 21 maart 2010 - 20:19
PHP beginner



Ik vind die klasse nogal wat uitgebreidt, uiteindelijk werkt dit ook:

  1. class databaseConnection
  2. {
  3.  
  4. public $dbConnection;
  5.  
  6. function createConnection( $host , $username , $password , $database , $id )
  7. {
  8. $this->dbConnection[$id] = @mysqli_connect( $host , $username , $password , $database );
  9.  
  10. return true;
  11.  
  12. }
  13.  
  14. }
  15.  
  16. $db = new databaseConnection;
  17. $db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon1' );
  18. $db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon2' );
  19.  
  20. $query = mysqli_query( $db->dbConnection['dbcon1'] , 'SELECT X FROM Y' );


Wat is het verschil tussen deze 2 klasses?

Offline  Joost
Gepost op: 21 maart 2010 - 20:21
PHP expert



Hier zit helemaal geen error handling in, en je vergeet de modulariteit van een losse connectie klasse.

Offline  avdg
Gepost op: 21 maart 2010 - 23:17
PHP gevorderde



@raze: dan kom je nog dichter bij mijn oplossing, met wat luier werk heb je zelfs geen constructor nodig

@joost: Ook oprechte excuses van mijn kant, ik was toen wat slecht gezind. Maar ik blijf bij mijn standpunt (hoe hekelig het ook is); wat jouw class doet, zou eigenlijk elke programmeur live moeten toepassen in zijn code, of ofwel kijken naar een complexer systeem gebruiken zoals pdo en gelijkaardige php oplossingen (zoals die in zend frameworks) of een drm (zoals doctrine, die momenteel op punt staat een hype te worden).

Offline  Qtacz
Gepost op: 22 maart 2010 - 15:02
Nieuw lid



Joost schreef:
Nee, dat is geen polymorfisme. Dat is Multiple Inheritance. Polymorfisme is, even een simpel voorbeeldje, dat twee klassen eenzelfde functie hebben die allebei een andere uitwerking hebben. Deze 2 klassen zijn meestal afgeleid van een andere klasse. Een goed voorbeeld staat op wikipedia: http://en.wikip...amming#PHP
Een artikel over Polymorfisme in php staat hier: http://www.devs...lymorphism/

Polymorfisme ontbreekt in zekere zin wel in php5.
Er kan enkel gebruik gemaakt worden van method overriding en niet van method overloading wat opzich wel spijtig is ...

Offline  Joost
Gepost op: 22 maart 2010 - 16:15
PHP expert



Daar heb je gelijk in, maar het principe op zich is wat dat betreft wel toepasbaar.

Offline  Ibrahim
Gepost op: 07 april 2010 - 00:41
PHP expert



Wat ik jammer vind van jou class is het feit dat het min of meer een Registry class is, specifiek voor Databases. Enige meerwaarde boven een Registry is de error handling.


Enkel aanvullende informatie, vragen en antwoorden op vragen zijn welkom.
 
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.049s