Re: 回复: [PHP-DEV] 回复: [PHP-DEV] How should I call a PHP function

[email protected] (Derick Rethans)
Newsgroups php.internals
Message-ID <[email protected]>
On Tue, 19 Aug 2014, Wei Dai wrote:

> > On Mon, 18 Aug 2014, Wei Dai wrote:
> >  
> > > > I'm trying to call a function inside a module, a PHP_FUNCTION.
> > > >  Other than zend_eval_stringl, what's the direct way to do it?
> > >  Please refer to call_user_function and call_user_function_ex.
> >
> > Actually, you need to be careful with this. If you are calling 
> > another PHP function in the same extension, do *not* use 
> > call_user_function.  Instead, create a common C function that you 
> > can call from whereever you need to. call_user_function(_ex) is not 
> > fast.
> >  
> i agree.  
> 
> here is a scenario:
> 
> i was wrote an extension, and i need to call some PHP function like 
> “strtr (http://lxr.php.net/s?defs=strtr&project=PHP_5_4)” “*trim"  or 
> a function in another extension but it doesn’t have a common C 
> function. However, i don’t want to copy the implement code into my 
> extension.
> 
> so, i have two options:
> 
> 1. copy the duplicate code into my extension, It can be fast in this 
> way, but the code is not beautiful.
>
> 2. call call_user_function(_ex) , it’s slower than the first option, 
> but the code is more simple and beautiful than the first option.

or:

3. refactor the functionality in PHP so that trim or others *can* be 
used in extensions.

I would not pick option 2, especially not if you're going to call this 
function a lot. Calling a PHP function directly involves a lot more 
overhead than just calling a C-function. 


cheers,
Derick

-- 
http://derickrethans.nl | http://xdebug.org
Like Xdebug? Consider a donation: http://xdebug.org/donate.php
twitter: @derickr and @xdebug
Posted with an email client that doesn't mangle email: alpine
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.