ID:               35634
 Updated by:       [EMAIL PROTECTED]
 Reported By:      robert at interjinn dot com
-Status:           Assigned
+Status:           Closed
 Bug Type:         Scripting Engine problem
 Operating System: Linux
 PHP Version:      5.1.1
 Assigned To:      dmitry
 New Comment:

The patch is applied into CVS HEAD and PHP_5_2.


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

[2006-11-30 15:22:55] rabbitt at gmail dot com

Dmitry - just curious if you have had a chance to look at this patch? I
had discussed it with Sara G. originally, so if you need background I'm
sure you could speak with her (don't know for sure, haven't spoken to
her about it since), or contact me directly.

cheers!,

--
Carl

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

[2006-11-08 01:59:10] a dot laquerre at videotron dot ca

I have upgraded to from version 5.1 to 5.2 on Windows with Apache and I
have an that error "Class declarations may not be nested".

I had that bug in that case:

class A extends C{

 static public function foo{
 
  require_once(B.class);
 }

}

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

[2006-08-14 17:27:28] [EMAIL PROTECTED]

http://www.xaraya.com/~rabbitt/zend.c.patch
Dmitry, could you plz check out this patch?

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

[2006-08-08 16:25:26] rabbitt at gmail dot com

if you think about it, it actually makes sense (and it doesn't at the
same time). When the exception is triggered, it's done from within
TestClass (during the declaration of the class
(zend_do_begin_function_declaration())), so the scope is still focused
there. So when errorHandler() is called due to the E_STRICT, it is
including (and thus, declaring) the 'errorClass' inside of the
errorHandler() function *inside* of TestClass.

Personally, I think this is a bug and, that the active_class_entry
should be saved and cleared prior to calling the errorhandler and then
restored afterwards. That would enable the error handler to work with
errors that are emitted within the context of a class that's in the
process of being declared (ie: scope is inbetween
zend_do_begin_class_declaration() and
zend_do_end_class_declaration()).

I'll attach a quick patch that does just this momentarily.

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

[2005-12-16 20:22:01] robert at interjinn dot com

I think this report should be given further consideration. I've read
the docs (not that I hadn't before), and I will assume you think this
is bogus because of the following int he PHP docs:

    The following error types cannot be handled with
    a user defined function: E_ERROR, E_PARSE, E_CORE_ERROR,
    E_CORE_WARNING, E_COMPILE_ERROR, E_COMPILE_WARNING, and
    most of E_STRICT raised in the file where
    set_error_handler() is called.

However, the E_STRICT raised int he error handler script should not be
raised in the first place since it is PHP erroneous context that
believes the class declaration is being nested, when in fact the class
declaration is not being nested. If the include context was properly
scoped, then no E_STRICT would be raised and I wouldn't be having a
problem.

If this is not why this bug was marked bogus, please shed some light
for me, since the bogus comment was pretty uninformative (yes I know
you're busy and don't have time for 50 million bogus bugs but there's
only so much RTFM I can do and hope I can come across exactly what you
think makes this a bogus bug).

Cheers,
Rob.

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

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/35634

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

Reply via email to