1

カスタム名前空間を宣言していると、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:32reagand-desktopapache2:PHP致命的なエラー:require_once():必要な'/home/reagand/dev/ldap_wrangler/inc/ldapwrangler/Net_LDAP2.class.php'(include_path ='。:/を開くことができませんでした18行目の/home/reagand/dev/ldap_wrangler/config.phpのusr/share / php:/ usr / share / pear')

参考までに、18行目はautoload関数のrequire_once()部分です。

Net_LDAP2クラスにldapwrangler名前空間を使用しないようにphpに指示するにはどうすればよいですか?または、その他の非ldapwranglerクラス。

4

1 に答える 1

3

外部名前空間を使用していることを宣言します。

<?php

namespace ldapwrangler;
use Net_LDAP2;
require_once 'Net/LDAP2.php';

宣言されていないすべてのクラスは、キーワードnamespaceで宣言する必要があります。use

名前空間の使用など、この種の標準であるPSR-0もご覧ください。

于 2012-05-29T19:08:49.813 に答える