SplClassoader:: Une syntaxe que je n'arrive pas a comprendre

Par Steeve VERDIEU, il y a 10 ans


Bonjour, j'ai une methode au sein d'une classe qui fait de l'autoloading(SplClassLoader). Il ya yne syntaxe que je n;arrive pas a cerner. Voici la methode:

/** * Loads the given class or interface. * * @param string $className The name of the class to load. * @return void */ public function loadClass($className) { if (null === $this->_namespace || $this->_namespace.$this->_namespaceSeparator === substr($className, 0, strlen($this->_namespace.$this->_namespaceSeparator))) { $fileName = ''; $namespace = ''; if (false !== ($lastNsPos = strripos($className, $this->_namespaceSeparator))) { $namespace = substr($className, 0, $lastNsPos); $className = substr($className, $lastNsPos + 1); $fileName = str_replace($this->_namespaceSeparator, DIRECTORY_SEPARATOR, $namespace) . DIRECTORY_SEPARATOR; } $fileName .= str_replace('_', DIRECTORY_SEPARATOR, $className) . $this->_fileExtension; require ($this->_includePath !== null ? $this->_includePath . DIRECTORY_SEPARATOR : '') . $fileName; } }

la ligne que je ne comprends pas est la suivante:

if (null === $this->_namespace || $this->_namespace.$this->_namespaceSeparator === substr($className, 0, strlen($this->_namespace.$this->_namespaceSeparator)))

En fait, ce que je comprends pas c'est cette syntaxe:

$this->_namespace.$this->_namespaceSeparator

Je n'ai jamais vue qu'on appelle un attribut sur un autre alors que ce dernier n'est pas une reference a un objet..

2 réponses

intelligid, il y a 10 ans

Bonjour,
le point est un opérateur de concaténation. Donc,

$this->_namespace.$this->_namespaceSeparator

Concatène $this->_namespace et $this->_namespaceSeparator

Steeve VERDIEU, il y a 10 ans

Ok, c'est fou... J n'y avais pas songé meme une seconde.. Merci