Заметил что Шторм выдаёт информацию что use не имеет эффекта никакого:
Почитал доку http://php.net/manual/ru/language.namespaces.importing.php но так и не понять в каком случае ничего не нбудет работать без use
как алиас понятно его можно использовать что бы сократить длинное имя. В обычном случае когда делаю $obj - new \Model\MyClass();
непонятно
Допустим у вас есть класс
namespace Model;
class MyClass{
.....
Тогда в другом пространстве имен для использования этого класса вам придется либо использовать полное имя класса(с его пространством имен), либо можно использовать use Model\MyClass;
и после этого, при обращении к классу, пространство имен не писать.
Т.е. или так
use Model\MyClass;
$myClass = new MyClass();
или так
$myClass = mew \Model\MyClass();
Эти два варианта использования абсолютно равнозначны.
UPD если у вас в двух пространствах имен присутствуют классы с одинаковым именем, то при попытке использовать и тот и тот PHP выдаст fatal error
.
sandbox
UPD Обратите внимание, что при использовании полного имени класса, если перед пространством имен не поставить \
("корневое" пространство имен), то имя будет считаться относительно текущего пространства имен.
Т.е. вот тут
namespace C;
$a = new B\A();
Будет считаться, что вы написали так:
namespace C;
$a = new \C\B\A();
В пространстве имен все относительно.
Например, Вы находитесь в пространстве имен namespace \models\
а) И пытаетесь использовать класс User, находящийся в том же namespace, то use использовать не нужно. Можно обращаться напрямую $user = new User();
б) Пытаетесь использовать класс User, находящийся в namespace \components\
Тогда надо писать $user = new \components\User()
в классе MyClass
;
Или, чтобы не писать всегда в разных местах кода путь к классу, один раз указать use components\User
А потом вызов станет короче: $user = new User();
Почему при использовании use не обязателен ведущий слэш - я не знаю, но можно его не указывать, а можно писать use \components\User
. Это равносильно.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Почему-то данные из формы никак не хотят лететь в бд,даже при условии того,что отчаявшись, я просто копирую код из разных гайдов и делаю всё...
здравствуйте, есть регулярное выражение - '#\[b\](*?)\[/b\]#s', не подскажите как можн оего изменить, чтобы текст внутри него как бы trim'ился? то есть...