У меня небольшие проблемы с пространствами имен и use
операторами.
У меня есть три файла: ShapeInterface.php
, Shape.php
и Circle.php
.
Я пытаюсь сделать это, используя относительные пути, поэтому я поместил это во все классы:
namespace Shape;
В моем кружковом классе у меня есть следующее:
namespace Shape;
//use Shape;
//use ShapeInterface;
include 'Shape.php';
include 'ShapeInterface.php';
class Circle extends Shape implements ShapeInterface{ ....
Если я использую include
утверждения, я не получаю ошибок. Если я попробую эти use
утверждения, то получу:
Неустранимая ошибка: класс Shape \ Shape не найден в /Users/shawn/Documents/work/sites/workspace/shape/Circle.php в строке 8
Может кто-нибудь дать мне небольшое руководство по этому вопросу?
php
namespaces
Шон Нортроп
источник
источник
Ответы:
use
Оператор для предоставления псевдонимов имен классов, интерфейсов и других пространств имен. Большинствоuse
операторов относятся к пространству имен или классу, который вы хотите сократить:эквивалентно:
Если
use
оператор используется с именем класса или интерфейса, он имеет следующие применения:use
Оператор не следует путать с самозарядными . Класс загружается автоматически (что исключает необходимостьinclude
) путем регистрации автозагрузчика (например, с помощьюspl_autoload_register
). Вы можете прочитать PSR-4, чтобы увидеть подходящую реализацию автозагрузчика.источник
Если вам нужно упорядочить код в пространствах имен, просто используйте ключевое слово
namespace
:file1.php
В file2.php
Вы также можете использовать
use
. Если в file2 поставитьuse foo\bar as mypath;
вам нужно использовать
mypath
вместоbar
любого места в файле:Использование
use foo\bar;
равноuse foo\bar as bar;
.источник