OO: Implementatie database denkwijze

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Ozzie PHP

Ozzie PHP

03/10/2011 20:49:18
Quote Anchor link
"Als je het General Model uit stap 2 extend in je Model class, dan krijg je toch iedere keer een nieuwe verbinding wanneer je een class oproept?"

Nee dat hoeft niet... je kunt de verbinding eenmalig aanmaken. Daar zijn wel truukjes voor.
 
PHP hulp

PHP hulp

06/11/2024 02:28:37
 
Jelmer -

Jelmer -

03/10/2011 23:04:59
Quote Anchor link
Wat nu als je het model met twee verschillende verbindingen wilt gebruiken? Bijvoorbeeld om personen uit database 1 en database 2 met elkaar te vergelijken of samen te voegen? Dan is het toch makkelijk dat je je database instantie los van je model-class-instantie regelt?

In de praktijk zal het niet zo snel voorkomen, en dat is met een boel problemen/oplossingen in oop het geval. Maar conceptueel is het wel netter. Oop doe je ook niet alleen omdat het praktisch is of omdat het goed werkt. Gewoon iteratief programmeren werkt ook goed, en gaat, zeker in het begin, zelfs een stuk gemakkelijker en sneller.

Eigenlijk stop je met oop meer in je code dan bij saai iteratief programmeren. Je programmeert niet alleen de bewerkingen die nodig zijn om input (de request) om te vormen tot resultaat (je response, de html) maar in je classes en hun onderlinge relaties leg je de concepten van het probleem vast. Je codeert hoe jij als mens erover nadenkt. Het is niet opmerkelijk dat oop en het maken van een ontologie zoveel op elkaar lijken. In het geval van oop kan je computer (nog) niets met die kennis die jij erin programmeert, maar andere programmeurs wel en daardoor wordt het probleem en jouw oplossing gemakkelijker te begrijpen.

Zo mooi mogelijk oo programmeren, zo goed mogelijk volgens de (ongeschreven?) regels, is gelijk aan zo duidelijk en precies mogelijk die kennis opschrijven.
 
Pim -

Pim -

03/10/2011 23:12:25
Quote Anchor link
Je hebt helemaal gelijk, maar (mijn) tijd is echter niet waardeloos. Semi-oop schrijven kan soms veel tijd schelen.

Het makkelijkst is om in je base model een statisch veld te maken waar je je DB connectie/DBAL in opslaat. Net is het natuurlijk niet.
 
Karel hertens

karel hertens

05/10/2011 02:33:39
Quote Anchor link
Ik gebruik meestal

include_once("settings.php");
include_once("mysql.php");
$db = new mysql($db_host, $db_user, $db_password, $db_database) ;

Dan heeft settings.php de variable voor de DB verbinding.
Meestal werk ik dan met een functions.php en die include in dan, hoef je alles maar een keer te doen, en login gegevens zijn makkelijk te updaten.

Query wordt dan:
$db->query("UPDATE table SET iets='iets' WHERE id='idnum'") ;
 
Pim -

Pim -

05/10/2011 09:40:30
Quote Anchor link
En dan werk je zeker met global?
 
Jelmer -

Jelmer -

05/10/2011 10:21:25
Quote Anchor link
Doe ik ook wel eens. Een functie app() maken die dan een soort global register heeft, zodat je gemakkelijk overal erbij kan. Geen "global" meer voor mij, daar heb ik me te vaak mee in de vingers gesneden door per ongeluk een variabele opnieuw te gebruiken.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function app()
{

    static $registery;
    return $registery ? $registery : $registery = new stdClass();
}


app()->db_x = new OCI_Debug(..);
app()->db_x->prepare('...')
?>

Maar ik probeer bij classes toch nog zoveel mogelijk via de constructor mee te geven. Dit is vooral als ik even snel er iets in hack, of als het om zo'n class gaat die je toch altijd maar op één plek wilt gebruiken, die heel specifiek is voor dat stukje code.
 
Pim -

Pim -

05/10/2011 13:31:44
Quote Anchor link
Met een mooie service container is dat toch ook makkelijk en dan heb je zo'n globaal register toch niet nodig?
 
Karel hertens

karel hertens

05/10/2011 15:30:53
Quote Anchor link
Pim, is er iets mis met global dan?
 
Pim -

Pim -

05/10/2011 17:32:11
Quote Anchor link
Gebruik van globals is erg onoverzichtelijk, leidt tot onvindbare bugs en is niet te testen.
 

Pagina: « vorige 1 2



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.