当我声明了自定义命名空间时,我无法使用PEAR库。
命名空间和自动加载功能:
<?php
namespace ldapwrangler;
function autoload($class_name)
{
$path = ROOT_DIR . "/inc/" . str_replace('\\', "/", $class_name) . ".class.php";
require_once($path);
}
spl_autoload_register('ldapwrangler\autoload');
?>
如果我尝试这样的ROOT_DIR / inc / ldapwrangler / LDAP.class.php:
<?php
namespace ldapwrangler;
require_once 'Net/LDAP2.php';
class LDAP{
protected $connection;
protected $defaultSearchBase;
/**
* @param $conf conf array containing ldap direction login and server.
*/
function __construct($conf)
{
$this->connection = $this->set_connection($conf);
$this->defaultSearchBase = $conf['basedn'];
}
/**
* Bind to the directory configured in the $conf array
*
* @param $conf conf array containing ldap direction login and server.
*/
function set_connection($conf)
{
$ldap = Net_LDAP2::connect($conf);
// Testing for connection error
if (PEAR::isError($ldap)) {
$msg = 'Could not connect to LDAP server: '.$ldap->getMessage();
Logging::log_message('error',$msg);
return false;
}
return $ldap;
}
//rest of the class...
}
?>
我收到这样的错误:
5月29日10:03:32 reagand-desktop apache2:PHP致命错误:require_once():无法打开所需的'/home/reagand/dev/ldap_wrangler/inc/ldapwrangler/Net_LDAP2.class.php'(include_path =' 。:/ usr / share / php:/ usr / share / pear')在/home/reagand/dev/ldap_wrangler/config.php第18行
仅供参考,第18行是自动加载功能的require_once()部分。
如何告诉php不要为Net_LDAP2类使用ldapwrangler命名空间?或者其他任何非ldapwrangler类。
答案 0 :(得分:3)
声明您正在使用外部命名空间:
<?php
namespace ldapwrangler;
use Net_LDAP2;
require_once 'Net/LDAP2.php';
声明的namespace
之外的每个类都需要由use
关键字声明。
请同时查看PSR-0,这是类名称空间使用等标准的标准。