Я не могу использовать библиотеку PEAR, когда я объявляю свое собственное пространство имен.Как использовать библиотеку 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/вкл/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...
}
?>
Я получаю сообщение об ошибке, как это:
May 29 10:03:32 reagand-desktop apache2: PHP Fatal error: require_once(): Failed opening required '/home/reagand/dev/ldap_wrangler/inc/ldapwrangler/Net_LDAP2.class.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/reagand/dev/ldap_wrangler/config.php on line 18
FYI, строка 18 является функцией require_once() функции автозагрузки.
Как я могу сказать php, чтобы не использовать пространство имен ldapwrangler для классов Net_LDAP2? Или любые другие классы, отличные от ldapwrangler, если на то пошло.
Мне также пришлось добавить PEAR и Net ldap фильтр: ' namespace ldapwrangler; использование Net_LDAP2; использование Net_LDAP2_Filter; использование PEAR; require_once 'Net/LDAP2.php'; ' В качестве альтернативы, я выяснил, что я могу предисловие каждой функции PEAR или Net_LDAP2 с помощью« \ », и это сработало. Спасибо! –