У меня в пространстве имен Test
, есть класс A
.
При реализации нового класса В
в этом же пространстве имени, мне не обязательно писать use Test;
, чтобы иметь доступ к классу A
?
Можно сразу так: ?
namespace Test;
class B {
public function A() { return new A(); }
}
На практике это работает. Но можно ли так делать, и не будут ли ошибки в будущем ?
Также, если вышенаписанное правда, то как быть, если в классе B
нужно будет юзать класс C
из пространства имен Test\SubTest
?
Нужно полностью писать use Test\SubTest;
или можно сокращенно use SubTest;
?
Указывая namespace Test;
вы обозначаете что находитесь в пространстве имен Test. Поэтому вам не нужно его использовать (указывать с помощью оператора use
) ведь вы уже в нем.
По поводу второго вопроса. Использую оператор use
вам нужно указывать абсолютный путь пространства имен. То есть use Test\SubTest;
. Если же не использовать опертор use вы можете прямо в коде использовать относительный путь. Например new SubTest\C;
. Что будет равносильно new Test\SubTest\С;
если вы находитесь в пространстве имен Test.
Вы можете подробнее почитать про использование пространства имен здесь: https://www.php.net/manual/ru/language.namespaces.php
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Вопрос, как в Java(каким классом?) можно производить запись в середину файла(перезаписать блок по смещению)
прочитал достаточно литературы, но суть дженериков не понял