PHP Manuál | ||
---|---|---|
Predchádzajúci | Dodatok F. Rozšírenie PHP 3 | Nasledujúci |
Na volanie funkcie z internej funkcie by ste mali použir funkciu call_user_function().
call_user_function() vracia SUCCESS pri úspechu a FAILURE v prípade, že sa funkcia nedá nájsť. Mali by ste si tú vrátenú hodnotu overiť! Ak vráti SUCCESS, ste zodpovedný za zničenie retval pval sami (alebo ju vráti ako vrátenú hodnotu funkcie). Ak vráti FAILURE, nie je hodnota retval definovaná a nesmiete sa jej dotknúť.
Všetky interné funkcie, ktoré volajú užívateľské funkcie musia byť znovu zavedené. Medzi iným to znamená, že nesmú používať globálne ani statické premenné.
call_user_function() má šesť argumentov:
Toto je hash tabuľka, v ktorej sa funkcia má hľadať.
Toto je ukazovateľ na objekt, na ktorý by sa mala funkcia vyvolať. Mal by byť NULL ak sa volá globálna funkcia. Ak nie je NULL (t.j. ukazuje na objekt), argument function_table sa ignoruje, a namiesto toho sa berie z hashu objektu. Objekt sa *môže* modifikovať funkciou, ktorá je naň vyvolaná (tá funkcia bude mať k nemu prístup cez $this). Ak pre nejaký dôvod nechcete, aby sa tak stalo, namiesto toho pošlite kópiu objektu.
Názov funkcie, ktorá sa má volať. pval musí byť typu IS_STRING s function_name.str.val a function_name.str.len nastavenými na príslušné hodnoty. function_name je modifikovaná call_user_function() - je prekonvertovaná na lowercase. Ak chcete prípad zachovať, namiesto toho pošlite kópiu názvu funkcie.
Ukazovateľ na štruktúru pval, do ktorej sa vrátená hodnota vyvolanej funkcie uloží. Štruktúra musí byť predtým vyhradená - call_user_function() ju sama NEVYHRADÍ.
Počet parametrov predávaných funkcii.
Pole ukazovateľov na hodnoty, ktoré sa predávajú ako argumenty funkcií, prvý argument je v offsete 0, druhý v offsete 1, atď. Pole je pole ukazovateľov na pval; Ukazovatele sa pošlú ako keby funkcii, čo znamená, že ak funkcia modifikuje svoje argumenty, pôvodné hodnoty sa zmenia (predávanie odkazmi). Ak nechcete také správanie, namiesto toho predajte kópiu.
Predchádzajúci | Domov | Nasledujúci |
Rozšírenie PHP 3 | Hore | Hlásenie chýb |