unset(), wel of niet gebruiken?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

15/11/2010 10:56:18
Quote Anchor link
Hallo,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

}

?>


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
Class Book
{

public function getText() {
  $chapters = $this->getChapters();
  $summary = $this->getSummary();
  $text = $chapters.$summary;
  unset($chapters, $summary);
  return $text;
}

}

?>


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
 
PHP hulp

PHP hulp

25/04/2024 10:29:43
 
TJVB tvb

TJVB tvb

15/11/2010 11:44:57
Quote Anchor link
Ik vraag me vooral af wat je ermee wilt doen?
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 ;))
 
Ozzie PHP

Ozzie PHP

15/11/2010 11:52:33
Quote Anchor link
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...)
Gewijzigd op 15/11/2010 11:54:02 door Ozzie PHP
 
Dalando De Zuil

Dalando De Zuil

15/11/2010 12:00:16
Quote Anchor link
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...)


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 ;)
 
Ozzie PHP

Ozzie PHP

15/11/2010 12:03:19
Quote Anchor link
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 ;)

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
 
Ozzie PHP

Ozzie PHP

16/11/2010 23:37:20
Quote Anchor link
Iemand nog iets toe te voegen? Ik heb helaas nog steeds geen antwoord op mijn vraag of het wel of niet zinvol (of noodzakelijk) is om variabelen binnen een functie te unsetten?
Gewijzigd op 16/11/2010 23:38:20 door Ozzie PHP
 



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.