ID:               40021
 User updated by:  wharmby at uk dot ibm dot com
 Reported By:      wharmby at uk dot ibm dot com
-Status:           Feedback
+Status:           Open
 Bug Type:         *General Issues
 Operating System: Windows XP
-PHP Version:      4CVS-2007-01-04 (snap)
+PHP Version:      5CVS-2007-07-12(snap)
 Assigned To:      iliaa
 New Comment:

Problem fixed in latest 5.2 snap shot (200707121230). Version updated.
Thanks


Previous Comments:
------------------------------------------------------------------------

[2007-07-11 12:57:10] [EMAIL PROTECTED]

Does this happen with PHP 5.2 (latest snapshot preferrably) ??
If so, update the version to "5CVS, 4CVS (yyyy-mm-dd)"

------------------------------------------------------------------------

[2007-03-24 17:08:59] [EMAIL PROTECTED]

Re-opening in order to get a response to by last 2 comments on this
bug.
Bug was changed to WNF after my first suggested fix which I admit had a
performance hit but my 2nd patch avoids these issues.

If this function is not to be fixed then I need to raise a defect
against the menual as it incorrectly suggests that the current setting
of the callback is returned.

------------------------------------------------------------------------

[2007-01-16 09:36:28] wharmby at uk dot ibm dot com

One use case I did miss in my testcase and one that
highlights the need to return the current callback routine 
in non-testing environments. By modifying the  assert_options API to
return the current setting of 
"callback" it is possible to save the old value so that it
can be restored at a later date, i.e if a routine wants  
to temporarily override the current callback routine. e.g

/* override current callback routine */
$o = assert_options(ASSERT_CALLBACK, "new-callback");

<do whatever>

/*restore callback */
assert_options(ASSERT_CALLBACK, $o);

This is not possible with current code.

My updated testcase: http://www.pastebin.ca/318252

------------------------------------------------------------------------

[2007-01-15 16:42:16] wharmby at uk dot ibm dot com

When you say "callback can be an array method in which
case it is an array, not a string" are you referring to 
the fact that the callback routine can be defined as follows

  $newcb = array("foo","cccc");
  $o = assert_options(ASSERT_CALLBACK,$newcb);

where "cccc" is a method of class "foo". 

If so then for sure the returned value is no longer always
a string and the testcase has to deal with this using is_string(),
is_array etc to determine just what has been returned.  Is this not
acceptable ? The manual already defines the return value from
assert_options() as "mixed" 
(some options result in a INT) although an extra line or two to explain
that assert_options(ASSERT_CALLBACK) can return either a string or array
would be required should this fix be accepted.

Here is the simple testcase I put together to test out the 
fix which I believe covers all possible use cases for this 
API and shows how I envisaged users dealing with the returned value: 
        http://pastebin.ca/317405

The output with fix applied is as follows: 
        http://pastebin.ca/317408

------------------------------------------------------------------------

[2007-01-15 15:45:42] [EMAIL PROTECTED]

The patch won't work I'm afraid. The reason it won't is 
because a callback can be an array method in which case it is 
an array, not a string.

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/40021

-- 
Edit this bug report at http://bugs.php.net/?id=40021&edit=1

Reply via email to