Hello Blake,
fixed.
Thursday, January 8, 2004, 9:14:07 PM, you wrote:
> Hello Marcus,
> Okay. I tracked it down. I am using the new build system so that spl
> gets compiled in. However, the problem is that simplexml is getting
> initialized before spl and simplexml needs the interface for spl to be
> initialized first.
> I found that the order of module initialization is stored in
> main/internal_functions.c. Here is mine:
> zend_module_entry *php_builtin_extensions[] = {
> phpext_bcmath_ptr,
> phpext_calendar_ptr,
> phpext_com_dotnet_ptr,
> phpext_ctype_ptr,
> phpext_dom_ptr,
> phpext_ftp_ptr,
> phpext_iconv_ptr,
> phpext_libxml_ptr,
> phpext_odbc_ptr,
> phpext_pcre_ptr,
> phpext_session_ptr,
> phpext_simplexml_ptr,
> phpext_spl_ptr,
> phpext_sqlite_ptr,
> phpext_standard_ptr,
> phpext_tokenizer_ptr,
> phpext_wddx_ptr,
> phpext_xml_ptr,
> phpext_zlib_ptr,
> };
> This file is created by the configure.js script. If I manually edit the
> file to put the spl extension _before_ the simplexml then recompile
> everything works fine.
> It appears that configure is sorting the extension list alphabetically
> before generating the above entries. I don't know if this is also the
> case on Linux (or other unixish). If the entries were not alphabetical,
> but based on the order passed to the configure.js, then the builder
> could simply change the order on the configuration command line.
> This makes me wonder if there are other new order dependencies now that
> interfaces are a part of PHP.
> Blake Schwendiman
> -----Original Message-----
> From: Marcus Boerger [mailto:[EMAIL PROTECTED]
> Sent: Thursday, January 08, 2004 12:42 PM
> To: Blake Schwendiman
> Subject: Re: [PHP-DEV] SimpleXML and Default Cast To String
> Hello Blake,
> are you compiling with the new or the old build system?
> I used the new one. And there spl was compiled into the
> exe. So that's what you need to do and i obviously need
> to disallow relying on spl in sxe when spl is compiled
> shared -> done.
> Thursday, January 8, 2004, 7:56:17 PM, you wrote:
>> My build fails on this line (from simplexml.c):
>> zend_class_implements(sxe_class_entry TSRMLS_CC, 1,
>> spl_ce_RecursiveIterator);
>> At the time of the call, spl_ce_RecursiveIterator is NULL.
>> I have to leave for about an hour. Then I'll be back to do more
>> investigation. I thought you'd like to know what I've found so far.
>> This failure occurs when simply trying to run the php.exe program at
>> all. The call stack is:
>> php5ts_debug.dll!_zend_is_inconsistent(_hashtable * ht=0x000000a4,
> char
>> * file=0x1050f914, int line=773) Line 53 + 0x3
>> php5ts_debug.dll!_zend_hash_merge(_hashtable * target=0x00aee6ac,
>> _hashtable * source=0x000000a4, void (void *)*
>> pCopyConstructor=0x101acdc9, void * tmp=0x00000000, unsigned int
> size=4,
>> int overwrite=0, char * __zend_filename=0x1050d798, unsigned int
>> __zend_lineno=1919) Line 773 + 0x17
>> php5ts_debug.dll!zend_do_implement_interface(_zend_class_entry *
>> ce=0x00aee608, _zend_class_entry * iface=0x00000000, void * * *
>> tsrm_ls=0x00932fe0) Line 1919 + 0x32
>> php5ts_debug.dll!zend_class_implements(_zend_class_entry *
>> class_entry=0x00aee608, void * * * tsrm_ls=0x00932fe0, int
>> num_interfaces=0, ...) Line 1490 + 0x11
>> php5ts_debug.dll!zm_startup_simplexml(int type=1, int
> module_number=12,
>> void * * * tsrm_ls=0x00932fe0) Line 1658 + 0x18
>> php5ts_debug.dll!zend_startup_module(_zend_module_entry *
>> module=0x1067c520) Line 1179 + 0x15
>> php5ts_debug.dll!php_startup_extensions(_zend_module_entry * *
>> ptr=0x106723dc, int count=19) Line 1294 + 0xb
>> php5ts_debug.dll!php_startup_internal_extensions() Line 80 + 0xc
>> php5ts_debug.dll!php_module_startup(_sapi_module_struct *
> sf=0x0041a420,
>> _zend_module_entry * additional_modules=0x00000000, unsigned int
>> num_additional_modules=0) Line 1460 + 0x5
>> php.exe!main(int argc=2, char * * argv=0x00932c48) Line 593 + 0x11
>> php.exe!mainCRTStartup() Line 400 + 0x11
>> Blake Schwendiman
>> -----Original Message-----
>> From: Marcus Boerger [mailto:[EMAIL PROTECTED]
>> Sent: Thursday, January 08, 2004 11:12 AM
>> To: Blake Schwendiman
>> Subject: Re: [PHP-DEV] SimpleXML and Default Cast To String
>> Hello Blake,
>> Thursday, January 8, 2004, 6:49:09 PM, you wrote:
>>> Hello Marcus,
>>> As far as you know, does SPL work on Windows? I tried to install and
>>> build it (which worked fine), but my CLI build of PHP doesn't run
>>> anymore.
>>> I'll be looking at this some more; just wondering if you know of
>>> problems with SPL and Windows.
>>> Blake
>>> -----Original Message-----
>>> From: Marcus Boerger [mailto:[EMAIL PROTECTED]
>>> Sent: Wednesday, January 07, 2004 5:09 PM
>>> To: Adam Maccabee Trachtenberg
>>> Cc: Marcus Boerger; Blake Schwendiman; [EMAIL PROTECTED]
>>> Subject: Re: [PHP-DEV] SimpleXML and Default Cast To String
>>> Hello Adam,
>>> Thursday, January 8, 2004, 12:59:19 AM, you wrote:
>>>> On Thu, 8 Jan 2004, Marcus Boerger wrote:
>>>>> From my opinion the current behavior is perfect because i see
>>> simplexml from
>>>>> an xml developers side and not from an html developers side. The
>>> former must
>>>>> typically know exactly where his strings comme from while the
> latter
>>> has
>>>>> only text to deal with and often has situations where he needs to
>>> filter out
>>>>> formatting tags like the <i> in the example.
>>>> All of my SimpleXML work is strictly XML, too. However, my thought
>> was
>>>> that I could always call strip_tags() to eliminate the information I
>>>> didn't want, but there was no apply_tags() function to do the
>>>> reverse. :) Therefore, it was better to use the other method.
>>> Well there's ext/SPL in PECL. A SimpleXML Object is also a Iterator
>> and
>>> it is a RecursiveIterator if ext/SPL is build in. Then SPL also
> offers
>> a
>>> RecursiveIteratorIterator that taks a RecursiveIterator...so it is
>> just
>>> a
>>> foreach-four-liner.
>>> $text = '';
>>> forach(new RecursiveIteratorIterator($sxe) as $el) {
>>> $text .= $el;
>>> }
>>>>> So i'd say let us add a method for returning the complete content.
>>> Adam
>>>>> could you do that?
>>>> That wouldn't be too difficult (although I am busy for the next day
>> or
>>>> two). However, as much as I loathe toggles, I'm wondering if it
>>>> wouldn't be better to make this an object-wide setting. My thought
>> are
>>>> that on an object-by-object basis, you either always want tags or
>>>> never want them.
>>>> Something like:
>>>> $sxe = simplexml_load_file('doc.xml');
>>>> $sxe->displayTags = true;
>>>> This would keep the interface clean. Or would that just confuse
>> things
>>>> with more magic?
>>>> Also, what would the default behavior should be? I can argue both
>>>> sides of the issue right now. :)
>>> The idea is really nice but you mentioned the problems yourself it is
>>> increasing the wtf factor. Maybe we implement both getContent and
>>> getText
>>> and do this kind of magic in the next version aka 5.1?
>> Works perfect here but tell me if you find out something.
>> marcus
>> C:\Work\php\php-cvs>Debug_TS\php.exe -v
>> PHP 5.0.0RC1-dev (cli) (built: Jan 8 2004 19:06:01) (DEBUG)
>> Copyright (c) 1997-2004 The PHP Group
>> Zend Engine v2.0.0-dev, Copyright (c) 1998-2004 Zend Technologies
>> C:\Work\php\php-cvs>Debug_TS\php.exe run-tests.php ext/spl
>> ext/simplexml/tests/010.phpt
>> =====================================================================
>> CWD : C:\Work\php\php-cvs
>> PHP : C:\Work\php\php-cvs\Debug_TS\php.exe
>> PHP_SAPI : cli
>> PHP_VERSION : 5.0.0RC1-dev
>> ZEND_VERSION: 2.0.0-dev
>> PHP_OS : WINNT - Windows NT BAUMBART 5.1 build 2600
>> INI actual : C:\Work\php\php-cvs
>> More .INIs :
>> Extra dirs :
>> =====================================================================
>> Running selected tests.
>> PASS SimpleXML and recursion
>> [C:\Work\php\php-cvs\ext\simplexml\tests\010.phpt]
>> PASS SPL: ArrayIterator
>> [C:\Work\php\php-cvs\ext\spl\tests\array_iterator.phpt]
>> PASS SPL: ArrayObject
>> [C:\Work\php\php-cvs\ext\spl\tests\array_object.phpt]
>> =====================================================================
>> Number of tests : 3 3
>> Tests skipped : 0 ( 0.0%) --------
>> Tests warned : 0 ( 0.0%) ( 0.0%)
>> Tests failed : 0 ( 0.0%) ( 0.0%)
>> Tests passed : 3 (100.0%) (100.0%)
>> ---------------------------------------------------------------------
>> Time taken : 1 seconds
>> =====================================================================
--
Best regards,
Marcus mailto:[EMAIL PROTECTED]
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php