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..
Bonjour,
le point est un opérateur de concaténation. Donc,
$this->_namespace.$this->_namespaceSeparator
Concatène $this->_namespace
et $this->_namespaceSeparator