как заменить команду USE в PHP при импорте классов? [Дубликат]

Программные средства для интерфейса не предоставляют жесткие коды правильно, значит, ваши коды должны быть расширены без нарушения предыдущей функциональности ..... просто расширения, не редактирующие коды prev

88
задан whoan 30 August 2015 в 01:35
поделиться

2 ответа

Оператор use предназначен для присвоения псевдонимов именам классов, интерфейсов или других пространств имен. Большинство операторов use относятся к пространству имен или классу, которые вы хотели бы сократить:

use My\Full\Namespace;

эквивалентно:

use My\Full\Namespace as Namespace;
// Namespace\Foo is now shorthand for My\Full\Namespace\Foo

Если оператор use используется с именем класса или интерфейса, он имеет следующие функции:

// after this, "new DifferentName();" would instantiate a My\Full\Classname
use My\Full\Classname as DifferentName;

// global class - making "new ArrayObject()" and "new \ArrayObject()" equivalent
use ArrayObject;

Оператор use не следует путать с автозагрузкой . Класс автоматически загружается (отрицая необходимость include), регистрируя автозагрузчик (например, с помощью spl_autoload_register). Вы можете прочитать PSR-4 , чтобы увидеть подходящую реализацию автозагрузчика.

140
ответ дан Tomas Prado 22 August 2018 в 09:43
поделиться
  • 1
    Удивительно, я проверю это. Благодаря! – Shawn Northrop 10 May 2012 в 22:22
  • 2
    Поэтому, если я создаю другой файл под названием bootstrap.php и поставлю автозагрузчик внутри вместе с $ circle = new Circle (); Он включает в себя Circle.php, но я получаю сообщение об ошибке: Fatal error: Class 'Shape' не найден в ... / Circle.php в строке 6. Кажется, загружает Circle.php, но не загружает Shape.php Circle определен as: class Circle extends Shape реализует ShapeInterface – Shawn Northrop 11 May 2012 в 02:05
  • 3
    Если я удалю пространство имен из вышеперечисленных классов, автозагрузчик отлично работает. Однако, когда у меня есть пространство имен в интерфейсе класса формы, я получаю вышеуказанную ошибку – Shawn Northrop 11 May 2012 в 02:34
  • 4
    Создал gist , чтобы привести пример. К сожалению, у gist нет подпапок. Поместите bootstrap.php в папку и поместите другие классы в подпапку с именем «Shape». – cmbuckley 11 May 2012 в 09:21
  • 5
    PSR-4 - это путь. Я обновил ссылку. – Anthony Rutledge 10 January 2017 в 02:52

Самый простой способ поставить

Если вам нужно заказать код в пространствах имен, просто используйте ключевое слово namespace.

В файле file1.php namespace foo\bar;

В файле2.php $obj = new foo\bar\myObj();


Еще немного по этому поводу - ключевое слово use.

Если вы скажете в файле2 use foo\bar as mypath это означает, что вам нужно использовать mypath вместо foo\bar в любом месте файла. '

$obj  = new mypath\myObj();

Если вы сказали use foo\bar, он равен use foo\bar as bar

7
ответ дан mopsyd 22 August 2018 в 09:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: