ID: 26456 Updated by: [EMAIL PROTECTED] Reported By: schlueter at phpbar dot de -Status: Verified +Status: Closed Bug Type: Zend Engine 2 problem Operating System: linux PHP Version: 5CVS-2004-03-15 New Comment:
Fixed in CVS HEAD and PHP_5_0. Previous Comments: ------------------------------------------------------------------------ [2005-04-22 16:30:15] [EMAIL PROTECTED] Seems like a compiler problem to me. That's what I got when running the script via STDIN: 1314 if (fptr->type == ZEND_USER_FUNCTION && fptr->op_array.doc_comment) { (gdb) p fptr->op_array.doc_comment $1 = 0x82ce2dc "\n function increment" If the script is run via `php script.php` fptr->op_array.doc_comment contains expected value (i.e. the comment itself, without any garbage data). ------------------------------------------------------------------------ [2003-11-30 04:28:55] [EMAIL PROTECTED] Thank you for the explanation. (I've never ever run scripts like this :). Verified..and here's short example script to test this: <?php class Counter { private static $c = 0; /** * Increment counter * * @access public * @return int */ function increment() { self::$c++; return self::$c; } } // Create an instance of the Reflection_Method class $method= new Reflection_Method('Counter', 'increment'); // Print documentation comment echo "\n--------------------------------------------------\n"; echo $method->getDocComment(); echo "\n--------------------------------------------------\n"; ?> Bad output (with "# php <enter> && paste script && ctrl+d): -------------------------------------------------- function increment) * * @access public * @return int */ -------------------------------------------------- Good output: -------------------------------------------------- /** * Increment counter * * @access public * @return int */ -------------------------------------------------- ------------------------------------------------------------------------ [2003-11-29 09:15:15] schlueter at phpbar dot de I've tested now with php5-200311291230 (simply ./configure without any paramters) and get the same results. And the exact way I'm runnig PHP ist this: 1. I'm opening a shell window 2. $ ./php [return] 3. I put the source into the clipboard 4. I paste it into the shell window 5. Ctrl+D 6. Wrong results (see original report) appear I hope now it's clear how I'm doing it. I've just tested it on another Linux machine: Same results... ------------------------------------------------------------------------ [2003-11-28 20:32:22] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php5-latest.tar.gz For Windows: http://snaps.php.net/win32/php5-win32-latest.zip ..and show exactly HOW you run it when it doesn't work, ------------------------------------------------------------------------ [2003-11-28 17:07:52] schlueter at phpbar dot de Description: ------------ While testing the examples from http://sitten-polizei.de/php/reflection_api/docs/language.reflection.html I found a (for me) unexpected beahvior with Reflection_Function::getDocComment() and Reflection_Method::getDocComment() the when calling PHP on the command line without paramter and copying a test script into my shell window, so PHP can read it from STDIN. If I call the same script from a file or pipe (cat test.php | /opt/php5/bin/php) all seems to work. Reproduce code: --------------- Example 14-5 from http://sitten-polizei.de/php/reflection_api/docs/language.reflection.class.reflection_method.html Expected result: ---------------- ===> The user-defined final public static method 'increment' (which is a regular method) declared in - lines 13 to 17 having the modifiers 261[final public static] ---> Documentation: '/** * Increment counter * * @final * @static * @access public * @return int */' ---> Invokation results in: int(1) Actual result: -------------- ===> The user-defined final public static method 'increment' (which is a regular method) declared in /home/johannes/- lines 13 to 17 having the modifiers 261[final public static] ---> Documentation: ' final public static function increment) final * @static * @access public * @return int */' ---> Invokation results in: int(1) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26456&edit=1