Cum se utilizează o bibliotecă PEAR în interiorul unui spațiu de nume particularizat?

Nu pot folosi o bibliotecă PEAR atunci când am declarat spațiul meu de nume particularizat.

Spațiul de nume și funcția autoload:

<?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');
?>

Dacă încerc ceva de genul asta 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...
    }
?>

Am o eroare ca aceasta:

29 mai 10:03:32 reacand-desktop apache2: PHP Eroare fatala: require_once (): Necesita deschidere '/home/reagand/dev/ldap_wrangler/inc/ldapwrangler/Net_LDAP2.class.php' (include_path = ' .:/usr/share/php:/usr/share/pear ') în /home/reagand/dev/ldap_wrangler/config.php pe linia 18

FYI, linia 18 este partea requ_once() a funcției autoload.

Cum să-i spun PHP să nu utilizeze spațiul de nume ldapwrangler pentru clasele Net_LDAP2? Sau orice altă clasă non-ldapwrangler, pentru asta.

0

1 răspunsuri

Declarați că folosiți un spațiu de nume extern:

<?php

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

Fiecare clasă din afara denumirii namespace declarată trebuie să fie declarată de cuvântul cheie use .

Vă rugăm, de asemenea, să aruncați o privire la PSR-0 , un standard pentru astfel de lucruri, cum ar fi utilizarea spațiului de nume.

0
adăugat
De asemenea, am adăugat filtrul PEAR și Net ldap: `namespace ldapwrangler; utilizați Net_LDAP2; utilizați Net_LDAP2_Filter; utilizați PEAR; require_once 'Net/LDAP2.php'; "Alternativ, mi-am dat seama că pot prefața fiecare funcție PEAR sau Net_LDAP2 cu" \ "și care a funcționat și ea. Mulțumiri!
adăugat autor David R., sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT