php "filosofie"
het zit namelijk zo. ik werk met een frontcontroller die dus al de paginas regelt en daarin include ik al mijn klasses en externe functies.
nu is mijn vraag wanneer ik deze beter include. pas wanneer ik ze nodig heb of bovenaan de frontcontroller?
ik doe mijn stage in programmeren van php en deze zou er dus zo "optimaal" mogelijk moeten uitzien :p
het handigste lijkt mij als je het nodig hebt, waarom een bestand parsen als je het niet nodig hebt.
Je kan ook een opcache (zoals APC, Zend Optimizer, Xcache e.a.) zodat hij de gecompileerde code opslaat. Dan maakt het niet zoveel meer uit hoeveel bestanden je moet inladen.
Pak er ook eens een profiler bij (in Zend zit er eentje, en volgens mij kan het ook met xdebug) dan kan je zien waar het meeste tijd aan wordt besteed.
@ jelmer, ik zal morgen eens kijken voor de programmas die je aanraad
verder had ik nog een vraag met wat code erbij:
dit stuk code zit in een apart php file.
en heb er ook zo nog andere voor andere databaseacties.
is het dan ok als ik telkens na dit uit te voeren mijn connectie sluit?
of is dit te tijdrovend?
en wat in geval er te veel connecties blijven opstaan?
en wanneer gebeurt dit dat er teveel connecties blijven open staan?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
function selectCat(){
// connectie ophalen
global $mdb2;
// sql statement
$taalID = $_SESSION['taalID'];
$resCat = $mdb2->query("SELECT * FROM tbl_categorie_beschrijving WHERE taalID='$taalID'");
// connectie sluiten
$mdb2->disconnect();
// controleren of er geen fout in resulaat is
if (PEAR::isError($resCat)) {
die($resCat->getMessage());
}else{
return $resCat;
}
}
?>
function selectCat(){
// connectie ophalen
global $mdb2;
// sql statement
$taalID = $_SESSION['taalID'];
$resCat = $mdb2->query("SELECT * FROM tbl_categorie_beschrijving WHERE taalID='$taalID'");
// connectie sluiten
$mdb2->disconnect();
// controleren of er geen fout in resulaat is
if (PEAR::isError($resCat)) {
die($resCat->getMessage());
}else{
return $resCat;
}
}
?>
PHP sluit z'n connecties automatisch, dat is dus niet iets om je druk over te maken. Het is overigens wel netjes om de boel na afloop te sluiten, ik doe het altijd wel.
maar wanneer is "na afloop"? wanneer weet je dat het niet meer nodig is?
ook nog een vraagje over mijn code van hierboven. bij het if statement return ik maar in één mogelijkheid. is dat ok?
Gewijzigd op 01/01/1970 01:00:00 door elias
En mocht ik het een keer vergeten, PHP ruimt zelf de rotzooi ook wel op.
Try-catch statements gebruiken, of bijvoorbeeld 'false' of 'null' teruggeven en bij de aanroep van de functie controleren of het niet null/false is, is een wat nettere oplossing. Try-catch is wel idealer.
@Jelmer: als ik dan catch op een error. wat stuur ik dan terug? of hoe wordt er dan verder gezorgd dat alles er goed uitziet?
voorbeeld:
Code (php)
In dit voorbeeld zal er natuurlijk altijd TRUE uitkomen maar dit is heel goed toepasbaar bij bijv. database connecties, bestanden open etc.
Gewijzigd op 01/01/1970 01:00:00 door Jurgen assaasas
heb ondertusse de includes al verplaatst en de connectie sluitingen al weggesmete
waneer doe ik trouwens include_once en wanneer require_once?
Gewijzigd op 01/01/1970 01:00:00 door elias
Quote:
Als een include mislukt zal hier een warning op gegeven worden maar het script zal wel verder doorlopen. Bij require zal een fatal error gegenereerd worden en het script zal dus ook niet verder uitgevoerd worden. Dat zijn dus de criteria waarop je kiest tussen include en require.waneer doe ik trouwens include_once en wanneer require_once?
Offtopic:
Dit if-statement zal nooit uitgevoerd worden aangezien de voorwaarde nooit TRUE op zal leveren. Je controleert hier namelijk of het toekennen van een waarde aan de variabele $var gelukt is en niet of $var die waarde heeft. Dat zou er natuurlijk zo uit zien:
Blanche schreef op 17.04.2008 22:37:
Offtopic:
Dit if-statement zal nooit uitgevoerd worden aangezien de voorwaarde nooit TRUE op zal leveren. Je controleert hier namelijk of het toekennen van een waarde aan de variabele $var gelukt is en niet of $var die waarde heeft. Dat zou er natuurlijk zo uit zien:
Quote:
Als een include mislukt zal hier een warning op gegeven worden maar het script zal wel verder doorlopen. Bij require zal een fatal error gegenereerd worden en het script zal dus ook niet verder uitgevoerd worden. Dat zijn dus de criteria waarop je kiest tussen include en require.waneer doe ik trouwens include_once en wanneer require_once?
Offtopic:
Dit if-statement zal nooit uitgevoerd worden aangezien de voorwaarde nooit TRUE op zal leveren. Je controleert hier namelijk of het toekennen van een waarde aan de variabele $var gelukt is en niet of $var die waarde heeft. Dat zou er natuurlijk zo uit zien:
Dat snap ik, maar stel dat het zou mislukken om die variable aan te maken. Wat natuurlijk nooit gebeurd.
Quote:
Beetje nutteloos om daarop te controleren dan he ;-)Wat natuurlijk nooit gebeurd.
Blanche schreef op 17.04.2008 23:12:
Quote:
Beetje nutteloos om daarop te controleren dan he ;-)Wat natuurlijk nooit gebeurd.
Ok, dat is ook zo, stel je voor dat daar if(!$var) staat waarbij $var een db instantie bevat :P.
Gewijzigd op 01/01/1970 01:00:00 door elias
Overigens is het handiger hier even een nieuw topic voor te maken. Zo kunnen mensen later de antwoorden makkelijker terugvinden
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
ik zal mijn vraag even editen en wegdoen, zodat er hier niet verder op gegaan kan worden.
dus: 'edit: elias verwijderd javascript vraag'