On Tuesday 26 September 2006 06:32 am, Prometheus Prometheus wrote:
> [EMAIL PROTECTED]
>
> i was just asking myself, if it is possible, to get the return value
> of a function after the function calls "return" (or throws an
> exception) and before the value is returned
>
> example:
> class A{
>      public function __construct(){}
>      public function __destruct(){
>        // here i want the return value like:
>        $retval = idontknowwhichfunction();
>        print $retval; // this print's "test"
>      }
> }
>
> function B(){
>    $classvar = new A();
>
>    return "test";
> }
>
> i thought it would be a very impressive function for that purpose
> for what i would need it:
> think about testing a big php application
> calling hundreds of functions and debugging them takes very long
> but if i could track the arguments (debug_back_trace() function) AND
> the return values (that's what i'm asking for) i could run a complete
> test and after this i could change the input values automated and
> compare it with the output i got before
>
> another option for this, would be just debugging of such applications
> cause it can be boring to debug big applications and with such a
> possibility i can reproduce the problem very fast and at any point
> within my application
>
> the question is:
> Q1: how is the return value (return or throw) stored within php?
>       or another question would be: is it possible to write an
> extension which can retrieve every variable set within my php
> session? (i know of the security problems this produces, but until
> know, i'm evaluating if it can work) and would be the return value
> within this variables?
> any hint on this would be great!
> since it's possible to create a sandbox within php (runkit extension)
> i think it should be possible to get the return value (or exception
> object) before the calling function receives it, not?
> Q2: maybe i didn't find it, but is there a finished php function
> which i can use like debug_back_trace but for the return value?
> Q3: anybody has another idea for such a "testing" or debugging
> environment? the main advantage of such a system would be: i can
> start debugging from any point within my code and i could very easily
> create automated test's which can compare the result (what it is and
> what it should be) "automated"
>
> [EMAIL PROTECTED]
Oh sweet, something I know!

Return values are stored in zval *return_value.  That's within any 
function that follows the Zend format (i.e. ZEND_FUNCTION() macro to 
declare it, returns value via the RETURN_*() macros).
-- 
Matt Sicker

Attachment: pgpfOUBVgNg0c.pgp
Description: PGP signature

Reply via email to