пространства имен php 7.3

111
27 мая 2021, 09:10

У меня в пространстве имен Test, есть класс A.

При реализации нового класса В в этом же пространстве имени, мне не обязательно писать use Test;, чтобы иметь доступ к классу A?

Можно сразу так: ?

namespace Test;
class B {
   public function A() { return new A(); }
}

На практике это работает. Но можно ли так делать, и не будут ли ошибки в будущем ?

Также, если вышенаписанное правда, то как быть, если в классе B нужно будет юзать класс C из пространства имен Test\SubTest ?

Нужно полностью писать use Test\SubTest; или можно сокращенно use SubTest;

?

Answer 1

Указывая 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

READ ALSO
Java, запись в файл со смещением

Java, запись в файл со смещением

Вопрос, как в Java(каким классом?) можно производить запись в середину файла(перезаписать блок по смещению)

127
Помогите понять суть дженериков в java

Помогите понять суть дженериков в java

прочитал достаточно литературы, но суть дженериков не понял

113