List Info

Thread: PEAR_Common::analyzeSourceCode and PHP5 detection




PEAR_Common::analyzeSourceCode and PHP5 detection
user name
2006-02-28 21:13:07
While testing again PEAR_PackageFileManager2 1.6.0a7
(upcoming release) 
with PEAR 1.4.7 and my proposal for a web frontend for PFM,
I discovered 
   wrong PHP5 source code detection.

I took Text_Highlighter 0.6.9 as source code reference for
many test cases.
With "Highlighter\Generator.php" file and lines
1100 to 1122
PEAR_Common::analyzeSourceCode told us that
"PHP5 token encountered in [...] packaging should be
done in PHP 5"

This is due to phpdoc public considered as PHP5 token public.

Scripts test:

file: codeparse.php
<?php
$code = <<<CODE
     /**
      * PHP4 Compatible Constructor
      *
      * param array  \$options
      * access public
      */
     function
Text_Highlighter_{$this->language}(\$options=array())
     {
         \$this->__construct(\$options);
     }

CODE;
?>

file:  studycase.php
<?php
require_once 'PEAR/Common.php';

PEAR::setErrorHandling(PEAR_ERROR_DIE);

$c = new PEAR_Common();
$c->analyzeSourceCode('codeparse.php');
?>

ouput result:
Error: PHP5 token encountered in codeparse.phppackaging
should be done 
in PHP 5

file: studycase2.php
<?php

$contents = file_get_contents('codeparse.php');
$tokens = token_get_all($contents);

echo '<pre>'; print_r($tokens); echo
'</pre>';

for ($i = 0; $i < sizeof($tokens); $i++) {
     if (is_array($tokens[$i])) {
         list($token, $data) = $tokens[$i];
     } else {
         $token = $tokens[$i];
         $data = '';
     }
     if ($token == T_STRING) {
         if (in_array(strtolower($data),
             array('public', 'private', 'protected',
'abstract',
                   'interface', 'implements', 'throw')
                  )) {
             echo '<pre>'; print_r($i);
print_r($data); echo '</pre>';
         }
     }
}
?>

output result:
25 public  ==> corresponding to phpdoc public
25 stand for T_STRING  on my platform (PHP 4.4.2 win32)

Token stories is back !!!


Laurent Laville

-- 
PEAR Development Mailing List (http://pear.php.net/)
To unsubscribe, visit: http://www.php.net/unsub
.php

[1]

about | contact  Other archives ( Real Estate discussion Medical topics )