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

Reply via email to