Source for file common.inc.php
Documentation is available at common.inc.php
* Common information needed by all portions of the application
* phpDocumentor :: automatic documentation generator
* Copyright (c) 2001-2008 Gregory Beaver
* This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
* @category ToolsAndUtilities
* @copyright 2001-2008 Gregory Beaver
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version CVS: $Id: common.inc.php 288074 2009-09-05 02:16:26Z ashnazg $
* @link http://www.phpdoc.org
* @link http://pear.php.net/PhpDocumentor
* @see parserDocBlock, parserInclude, parserPage, parserClass
* @see parserDefine, parserFunction, parserMethod, parserVar
* @todo CS cleanup - change package to PhpDocumentor
* @todo CS cleanup - rename constant to TOKENIZER_EXT
/* phpDocumentor version */
if ('@PEAR-DIR@' != '@'. 'PEAR-DIR@') {
define("PHPDOCUMENTOR_VER", "@VER@");
define("PHPDOCUMENTOR_VER", "1.4.3");
define("PHPDOCUMENTOR_WEBSITE", "http://www.phpdoc.org");
// set the correct path delimiter
define('SMART_PATH_DELIMITER', DIRECTORY_SEPARATOR);
define('tokenizer_ext', extension_loaded('tokenizer')
&& version_compare(phpversion(), "4.3.0", ">="));
// we just replace all the \ with / so that we can just operate on /
define('PATH_DELIMITER', '/'); // set the correct path delimiter
define('PHPDOCUMENTOR_WINDOWS', substr(PHP_OS, 0, 3) == 'WIN');
phpversion() == '5.0.0RC1-dev' || phpversion() == '5.0.0RC2-dev'
|| version_compare(phpversion(), '5.0.0', 'ge'));
// determine which "clone" class to set, based on PHP major version
$cloneClassDir = 'PhpDocumentor' . DIRECTORY_SEPARATOR . 'phpDocumentor';
$cloneClassFile = 'clone.inc.php';
if ('@VER@' == '@'. 'VER@') {
// we're _not_ in a PEAR installation
$cloneClassDir = dirname(__FILE__ );
$cloneClassFile = 'clone5.inc.php';
require_once $cloneClassDir . DIRECTORY_SEPARATOR . $cloneClassFile;
// make arg arrays available
if (isset ($_SERVER['argv'])) {
$argv = $_SERVER['argv'];
$argc = $_SERVER['argc'];
* used in phpdoc.php and new_phpdoc.php
* @param string $directory a directory string
* @return array an array of directory contents
* @todo CS cleanup - rename function to PhpDocumentor_ConfigFileList
while ($d && $entry= $d->read()) {
if (strcmp($entry, ".") != 0 && strcmp($entry, "..") != 0) {
if (substr($entry, 0, 1) != ".") $getentry = true;
* Works like {@link parse_ini_file}, except it will take a section like:
* and return an associative array(MYVAR => array(value1, value2, value3))
* @param string $filename full path to the ini file
* @param bool $process_sections add an associative index
* for each section [in brackets]
* @todo CS cleanup - rename function to PhpDocumentor_parse_ini_file
$lines = @file($filename);
if (!$lines) return $lines;
foreach ($lines as $line) {
// code by Greg Beaver, ignore comments
if ($line[0] == ';') continue;
if ($line[0] == "[" && $line[strlen($line) - 1] == "]") {
if (substr($property, 0, 1) == '"' && substr($property, - 1) == '"') {
if ($value == 'false') $value = false;
if ($value == 'true') $value = true;
if (substr($value, 0, 1) == '"' && substr($value, - 1) == '"') {
$ini_array[$sec_name][$property] = $value;
$ini_array[$property] = $value;
$ini_array[$property] = $value;
if (trim($line[0]) == ';') continue;
$ini_array[$sec_name][] = trim($line);
* construct an "array_key_exists()" method
* if the runtime PHP version doesn't have one
* @todo CS Cleanup - can't avoid "prefixed by package" error
* @todo depend on PHP_Compat for this?
* Determines if a given key exists in a given array
* @param mixed $key key to search for
* @param array $search the array of keys to search
* @return bool whether or not the key was found
foreach ($search as $keys => $nul) {
if ($key == $keys) return true;
* construct an "is_a()" method
* if the runtime PHP version doesn't have one
* @todo CS Cleanup - can't avoid "prefixed by package" error
* @todo depend on PHP_Compat for this?
* Determines if one item "is" an object of the other item
* @param string $classname the class in question
* @param string $classquery the "is it a" class
* @return bool whether or not the class "is" one
function is_a($classname, $classquery)
} elseif (!empty($father)) {
return is_a($father, $classquery);
* @param string $s the "debug message" string to echo out
* @todo CS Cleanup - can't avoid "prefixed by package" error
* Returns a formatted var_dump for debugging purposes.
* @param string $s string to display
* @param mixed $v unlimited number of variables to display with var_dump()
if (isset ($GLOBALS['dont_debug']) && $GLOBALS['dont_debug']) return;
debug($s. "\n\n</pre><blockquote><pre>");
debug("</pre></blockquote><pre>\n\n");
* Returns a lower-cased version of get_class for PHP 5
* get_class() returns case as declared in the file in PHP 5
* @param object $object the object to get the classname for
* @return string the class name of the given object
* @todo CS cleanup - rename function to PhpDocumentor_get_class
|