magic __get __set

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 4

- Raoul -

- Raoul -

02/02/2013 16:03:58
Quote Anchor link
Ozzie PHP op 02/02/2013 16:02:19:
Wanneer zouden er eigenlijk WEL merkbare verschillen optreden? Vanaf welke factor?


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

public function __get($method, $parameter)
{

   while(true) {
      for($i = 0; $i < 10000000000; $i++)
      {

         sleep(1);
      }
   }
}


?>
 
PHP hulp

PHP hulp

24/11/2024 01:49:41
 
Ozzie PHP

Ozzie PHP

02/02/2013 16:06:34
Quote Anchor link
Wat doe je nou?
 
- Raoul -

- Raoul -

02/02/2013 16:08:27
Quote Anchor link
Ozzie PHP op 02/02/2013 16:06:34:
Wat doe je nou?


Ik probeer duidelijk te maken dat je moeilijk alles in PHP op vlak van performance in vraag kan stellen.
Magic get en set zijn iets, maar dan ook iets trager dan de gewone reguliere getters en setters maar een gemiddelde bezoeker merkt daar niks van.

Hoe snel jouw magic getters en setters zijn, dat hangt er vanaf wat je erin doet. Als jij CPU intensieve dingen gaat doen in gewone getters en setters zal het ook wel traag zijn, hetzelfde met de magic methods.

Dus kortom, keep on programming en maak je geen zorgen. Als iets traag is zul je dat vanzelf wel merken.
Gewijzigd op 02/02/2013 16:09:44 door - Raoul -
 
Ozzie PHP

Ozzie PHP

02/02/2013 16:19:06
Quote Anchor link
Ja, maar je moet natuurlijk wel hetzelfde met elkaar vergelijken. Dat lijkt me vrij logisch anders ga je appels met peren vergelijken.

De vraag is ook, hoe vaak per pagina-aanroep ga je die magic __get en __set functie gebruiken. Stel je zou alles via magic __get en __set doen, hoe vaak is dat dan voor 1 pagina-aanroep. Een paar honderd altijd wel denk ik... maar zou het meer dan 1.000 zijn, of 10.000???? Daar hangt het natuurlijk ook vanaf.

Ik kan op een gegeven moment beslissen dat ik in mijn container class __get en __set ga gebruiken... maar als je dan consequent zou zijn, moet je het eigenlijk overal gebruiken...

Het zou eigenlijk inconsequent zijn als je dit doet:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="<?php echo $paths->content->images->thumbnails . $user->getAvatar(); ?>">


Dan zou je eigenlijk ook dit moeten doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<img src="<?php echo $paths->content->images->thumbnails . $user->avatar; ?>">


(In het laatste geval zou avatar dan een public property kunnen zijn.)

Hoe dan ook, als je voor methode1 kiest, zou je eigenlijk overal de get() methode moeten skippen, wil je consequent zijn... maar of dát nou zo'n goed idee is... ?
 
Erwin H

Erwin H

02/02/2013 16:36:16
Quote Anchor link
Als iets 1 nanoseconde duurt, en je hebt een alternatief dat 100 keer zo lang duurt merk je er niets van. Als iets 1 seconde duurt en je hebt een alternatief dat 100 keer zo lang duurt merk je het wel.

De factor alleen is dus niet van belang, het gaat er ook om hoelang de operatie om te beginnen duurt en hoe vaak je het aanroept.

Daarom val ik terug op een eerdere opmerking: je kan je vraag alleen beantwoorden als je de gehele context ziet en dat is in je complete framework.

Edit: en dit was het bericht waarop bovenstaande een reactie is:
Ozzie PHP op 02/02/2013 16:02:19:
Wanneer zouden er eigenlijk WEL merkbare verschillen optreden? Vanaf welke factor?
Gewijzigd op 02/02/2013 16:37:19 door Erwin H
 
Ozzie PHP

Ozzie PHP

02/02/2013 16:42:49
Quote Anchor link
Thanks Erwin, daar heb je zeker een goed punt.
 
Wouter J

Wouter J

02/02/2013 18:04:02
Quote Anchor link
Merk overigens op dat PHPbench het script al automatisch in een loop gooit. (standaard is dit 1000 keer, dit kun je aanpassen)

Toevoeging op 02/02/2013 18:04:16:

Merk overigens op dat PHPbench het script al automatisch in een loop gooit. (standaard is dit 1000 keer, dit kun je aanpassen)
 
Ozzie PHP

Ozzie PHP

02/02/2013 18:10:45
Quote Anchor link
Ah oke... vond het al vreemd. Wat vind je van mijn verhaal hierboven wat betreft consistentie? Als je in 1 class de magic methods gebruikt, zou je het dan niet overal moeten gebruiken om je code consistent te houden?
 
Wouter J

Wouter J

02/02/2013 18:51:48
Quote Anchor link
Ja, ik ben erg voorstander van consistentie en dus als je het ergens doet overal doen.
 
Ozzie PHP

Ozzie PHP

02/02/2013 20:14:17
Quote Anchor link
oké!
 

Pagina: « vorige 1 2 3 4



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.