RE: [PHP-DEV] Cannot register classes after MINIT
| From: | Jeff Brown | Date: | Sun, 19 Sep 2010 19:00:29 +0000 |
| Subject: | RE: [PHP-DEV] Cannot register classes after MINIT | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-49768@lists.php.net to get a copy of this message | ||
What differentiates user declared classes from "built in" classes? I am not sure whether
'extension' defined classes (PDO for example) are what you consider "built in",
but to better understand, is there some special treatment PHP gives classes defined in a certain
manner (like those defined at the MINIT stage)? If you could elaborate that would help me greatly.
Furthermore I have decided with the kind help of the #php.pecl people (some of them are here I
guess) to debug PHP (thank god for --enable-debug) and see what goes on, will let you know if I find
anything.
Thanks :D
> From: johannes@schlueters.de
> To: jb_jeff@hotmail.com
> CC: internals@lists.php.net
> Date: Sun, 19 Sep 2010 18:51:56 +0200
> Subject: Re: [PHP-DEV] Cannot register classes after MINIT
>
> On Sat, 2010-09-18 at 20:01 +0000, Jeff Brown wrote:
> > I have recently tried registering a class (via zend_register_class)
> > inside of a PHP_FUNCTION, though this may sound weird and an
> > unecessary function I ask that you ignore this request.I have noticed
> > that registering goes fine but every time I declare a class after the
> > call to my function, e.g:create_class_function('class_name');class
> > Test { }
> > My PHP process crashes, not declaring the Test classes causes no
> > crash, I also noticed that If I move my code to the MINIT part no
> > crash occurs and all goes well as with other PHP extensions.
>
> I have no idea why it crashes, but in general there are a few
> assumptions around "built in" classes, like not freeing them on request
> shutdown etc.
>
> Adding them at run time really is no good idea ...
>
> johannes
>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>