|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2003-11-28 17:07 UTC] 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) PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Mon Oct 27 09:00:02 2025 UTC |
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 */ --------------------------------------------------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).