php Пространства имен -- когда в начале должен быть слэш а когда нет
Primary tabs
Когда мы говорим о пространствах имен, следует понимать следующее:
- В инструкции namespace имя пространства никогда не начинается со слеша -- то есть он в ней не используется.
- В инструкции use слэш в начале имени не влияет на на определение пространства (оно вседа начинает отсчитываться как бы от "корня" вне зависимости от наличия или отсутствия слеша):
// две идентичные инструкции импорта пространства имен use \classOneNamespace as rel; use classOneNamespace as abs;
- Слэш в начале имени класса влияет на положение дел:
-- так как его наличие говорит о том, что отсчет надо производить от корня пространства имен, а отсутствие, о том, что следует дополнить имя класса именем пространства (которое было указано в namespace):<?php namespace test\namespaces; include 'classOne.php'; include 'classTwo.php'; include 'rootSpace.php'; $a = new \classOneNamespace\One(); // использует класс \classOneNamespace\One $b = new classOneNamespace\One(); // использует класс test\namespaces\classOneNamespace\One $a = new \MyRootClass(); // использует класс MyRootClass (из корневого пространства)
- Log in to post comments
- 2467 reads