Reacties op het script [Class] Meerdere MySQL connecties
|
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
<?php
$connections = new stdClass;
$connection->connection1 = mysql_connect(/* blah */);
$connection->connection2 = mysql_connect(/* another blah */);
$connection->connection3 = mysql_connect(/* last blah */);
mysql_query(/* blah query*/, $connection->connection1);
mysql_query(/* blah stuff */, $connection->connection2);
mysql_query(/* last blah query */, $connection->connection3);
<?php $connections = new stdClass; mysql_query(/* blah query*/, $connection->connection1); mysql_query(/* blah stuff */, $connection->connection2); 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 |
|
|
|
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. |
|
|
|
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 ? |
|
|
|
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. |
|
|
|
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:
<?php
class Polo extends Volkswagen, Auto, Voertuig {
// nu heeft de volkswagen polo toegang tot de methods van volkswagen, auto en voertuig
}
<?php class Polo extends Volkswagen, Auto, Voertuig { // nu heeft de volkswagen polo toegang tot de methods van volkswagen, auto en voertuig }
Een beetje domme voorbeeld, maar zo zie je wat ik bedoel. |
|
|
|
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/ |
|
|
|
Gepost op: 21 maart 2010 - 20:19 |
|
|
|
PHP beginner
|
Ik vind die klasse nogal wat uitgebreidt, uiteindelijk werkt dit ook:
class databaseConnection
{
public $dbConnection;
function createConnection( $host , $username , $password , $database , $id )
{
$this->dbConnection[$id] = @mysqli_connect( $host , $username , $password , $database );
return true;
}
}
$db = new databaseConnection;
$db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon1' );
$db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon2' );
$query = mysqli_query( $db->dbConnection['dbcon1'] , 'SELECT X FROM Y' );
class databaseConnection { public $dbConnection; function createConnection( $host , $username , $password , $database , $id ) { $this->dbConnection[$id] = @mysqli_connect( $host , $username , $password , $database ); return true; } } $db = new databaseConnection; $db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon1' ); $db->createConnection( 'HOST', 'USERNAME', 'PASSWORD', 'DATABASE', 'dbcon2' ); $query = mysqli_query( $db->dbConnection['dbcon1'] , 'SELECT X FROM Y' );
Wat is het verschil tussen deze 2 klasses? |
|
|
|
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. |
|
|
|
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). |
|
|
|
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 ... |
|
|
|
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. |
|
|
|
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. |
|
|
|