unset(), wel of niet gebruiken?
Ik ben bezig met het maken van een framework en nu vraag ik me het volgende af. Is het zinvol om alle onnodige variabelen die je niet meer gebruikt te unsetten binnen een functie?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
Class Voorbeeld
{
public function voorbeeld() {
$paths = array();
$prefix = 'path/naar/directory/';
$directories = array('content', 'css', 'images');
foreach ($directories as $path) {
$paths[$path] = $prefix.$path.'/';
}
unset($prefix, $directories, $path); // deze variabelen worden niet meer gebruikt
return $paths;
}
}
?>
Class Voorbeeld
{
public function voorbeeld() {
$paths = array();
$prefix = 'path/naar/directory/';
$directories = array('content', 'css', 'images');
foreach ($directories as $path) {
$paths[$path] = $prefix.$path.'/';
}
unset($prefix, $directories, $path); // deze variabelen worden niet meer gebruikt
return $paths;
}
}
?>
In het bovenstaande voorbeeld heb ik 3 variabelen geunset. Mijn vraag is nu of dit unsetten zinvol is. Nu gaat het hier om variabelen met een kleine inhoud, maar stel je het volgende voor:
<code>
Code (php)
Bovenstaand voorbeeld is niet heel slim geprogrammeerd natuurlijk, maar het gaat even om het idee. Stel dat de variabele $chapters 500 pagina's aan tekst bevat, is het dan slim om die variabele te unsetten op het moment dat je deze niet meer nodig hebt?
Gewijzigd op 15/11/2010 11:48:01 door Ozzie PHP
De regel daaronder staat je return en ben je al uit de scope van je functie. Dan is het gewoon weg.
(Daarnaast is de functie getBook niet logisch ;))
Deze functie dient uitsluitend als voorbeeldje (normaal gesproken zou je natuurlijk gewoon zeggen 'return $this->getChapters.$this->getSummary';). Als je returnt ben je inderdaad weg uit de scope van de functie, maar stel nu dat het een functie van 100 regels was, zou het dan wel zinvol zijn om $chapters en $summary te unsetten? Laat ik mijn vraag nog breder stellen, is het uberhaupt nodig / zinvol om binnen een functie variabelen te unsetten?
p.s. Wat doet die editor vervelend (ah, in compatibiliteitsmodus gaat het beter...)
Gewijzigd op 15/11/2010 11:54:02 door Ozzie PHP
Ozzie PHP op 15/11/2010 11:52:33:
Dank voor je reactie. Ik heb de functie even aangepast :-)
Deze functie dient uitsluitend als voorbeeldje (normaal gesproken zou je natuurlijk gewoon zeggen 'return $this->getChapters.$this->getSummary';). Als je returnt ben je inderdaad weg uit de scope van de functie, maar stel nu dat het een functie van 100 regels was, zou het dan wel zinvol zijn om $chapters en $summary te unsetten? Laat ik mijn vraag nog breder stellen, is het uberhaupt nodig / zinvol om binnen een functie variabelen te unsetten?
p.s. Wat doet die editor vervelend (ah, in compatibiliteitsmodus gaat het beter...)
Deze functie dient uitsluitend als voorbeeldje (normaal gesproken zou je natuurlijk gewoon zeggen 'return $this->getChapters.$this->getSummary';). Als je returnt ben je inderdaad weg uit de scope van de functie, maar stel nu dat het een functie van 100 regels was, zou het dan wel zinvol zijn om $chapters en $summary te unsetten? Laat ik mijn vraag nog breder stellen, is het uberhaupt nodig / zinvol om binnen een functie variabelen te unsetten?
p.s. Wat doet die editor vervelend (ah, in compatibiliteitsmodus gaat het beter...)
Als je het niet voor problemen zorgt, dan zou ik het ook niet gebruiken.
En die editor doet vervelend in IE, gebruik Firefox of Chrome ;)
Dalando De Zuil op 15/11/2010 12:00:16:
Als je het niet voor problemen zorgt, dan zou ik het ook niet gebruiken.
En die editor doet vervelend in IE, gebruik Firefox of Chrome ;)
En die editor doet vervelend in IE, gebruik Firefox of Chrome ;)
Ja, maar het gaat mij er om of het een toegevoegde waarde heeft, bijvoorbeeld dat je geheugen vrijmaakt waardoor het systeem sneller wordt.
Overigens las ik dat je wel moet unsetten na een foreach functie, maar volgens mij alleen als je 'by reference' gebruikt...?
Toevoeging op 15/11/2010 13:19:39:
Ik hoop dat na de diverse reacties mijn uiteindelijke vraag nog steeds duidelijk is. Voor de zekerheid zal ik 'm toch nog even stellen:
Is het wel of niet zinvol (of noodzakelijk) om variabelen binnen een functie te unsetten? (bijvoorbeeld omdat er dan extra geheugenruimte vrijkomt??)
Graag jullie mening
Gewijzigd op 15/11/2010 13:19:30 door Ozzie PHP
Gewijzigd op 16/11/2010 23:38:20 door Ozzie PHP