verschil functie aanroepen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ozzie PHP

Ozzie PHP

01/04/2012 22:46:57
Quote Anchor link
Is er een verschil tussen het aanroepen van een functie op deze manier:

$my_class->my_action();
$my_class->$my_action();

en op deze manier?

call_user_func(array($my_class, $my_action));
Gewijzigd op 02/04/2012 20:36:54 door Ozzie PHP
 
PHP hulp

PHP hulp

26/01/2020 13:03:40
 
Pim -

Pim -

02/04/2012 19:33:17
Quote Anchor link
Ja, de laatste methode stelt je in staat een variabele funcctienaam en een variabel aantal argumenten te gebruiken.
Als je dat niet nodig hebt is de eerste manier natuurlijk duidelijker.
 
Wouter J

Wouter J

02/04/2012 19:38:00
Quote Anchor link
Pim, zonder die functie kun je de functie ook variabel maken:
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 Test
{
  public function sayHello()
  {

    return 'hello world';
  }
}


$t = new Test;
$funcName = 'sayHello';

echo $t->$funcName();
?>


En met call_user_func kun je maar 1 argument toevoegen, met call_user_func_array meerdere.

Wat dus het voordeel is van de call_user_func is mij ook nog niet heel duidelijk.

Edit:
Even in de PHP broncode gekeken en er lijkt alleen regelrecht een zend_call_func aangeroepen te worden, dat er dus iets speciaals mee wordt gedaan lijkt me niet.
Gewijzigd op 02/04/2012 19:42:43 door Wouter J
 
Ozzie PHP

Ozzie PHP

02/04/2012 19:54:59
Quote Anchor link
Wouter J op 02/04/2012 19:38:00:
Pim, zonder die functie kun je de functie ook variabel maken:

En dat is dus precies waarom ik niet snap wat nou het nut van die functie is.
 
Wouter J

Wouter J

02/04/2012 20:18:48
Quote Anchor link
Op internet kan ik niet echt goed een uitleg vinden. Het beste wat ik kan vinden is ong. samengevat hier te lezen: http://stackoverflow.com/a/1596347/1149495

Het zegt eigenlijk allemaal dat call_user_func_array heel handig is, omdat je dan een variabel aantal argumenten kunt toevoegen aan je functie, maar call_user_func kan ook gewoon gedaan worden zonder die functie.
 
Ozzie PHP

Ozzie PHP

02/04/2012 20:35:27
Quote Anchor link
mja... ik blijf het een beethje vaag vinden

Dit: $my_class->$my_action();
en dit: call_user_func(array($my_class, $my_action));

doet toch echt hetzelfde...

(ik was in mijn beginpost het $ teken vergeten bij my_action)
Gewijzigd op 02/04/2012 20:36:31 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.