Как работает пространств имен в PHP?


пространства имен были реализованы начиная с версии PHP 5.3.0, как способ "обернуть элементы".

и В самом деле никогда не понимал истинного концепции ним, и всегда я един с автозагрузки классов.

может Кто-нибудь объяснить мне, просто, как работает пространства имен, почему они используются, и если они имеют что-то автозагрузки классов?

Например:

namespace App\Http\Controllers; // usando namespace
use App\User;  // usando autoload
Author: Maniero, 2015-12-17

2 answers

Пространства имен полезны, главным образом, чтобы избежать столкновения имен.

Были реализованы в PHP 5.3.

Очень часто можно увидеть библиотек более ранних версий PHP, используя шаблон, который заключается в использовании - underline в имени класса, чтобы избежать конфликтов.

Это было необходимо, потому что, как возникали многие библиотеки, имена начали получать "дополнительную" по учетной записи может быть конфликтов имен в общем.

Ярким примером является создание класс с именем Client. По крайней мере, почти все библиотеки, которые я установил в проекте имеют это имя. Именно здесь и вступает в пространства имен.

Мы Можем видеть, например, как если resolvia эту проблему раньше.

, Например в старых версиях:

 Zend_Server_Client

Новые выпуски:

 Zend\Server\Client

В PHP версии 5.6 и они становятся еще более полезными, поскольку благодаря новой функции use function, стало легче иметь также хранилища функция.

Например:

 class WallaceMaxters\Helpers;

 function print_r($valor)
 {
     echo '<pre>';
     \print_r($valor);
     echo '</pre>';
 }

Это функция, которую я создал вызов print_r " не будет иметь столкновения с print_r", счет имен. Однако, чтобы использовать его в версиях, предшествующих php 5.6, вам придется сделать что-то вроде:

WallaceMaxters\Helpers\print_r($_POST);

Или:

 use WallaceMaxters\Helpers as h;

h\print_r($_POST);

Но на PHP 5.6, так как классы, можно создать alias локальной для этой функции.

use function WallaceMaxters\Helpers\print_r as pr

pr($_POST);

Autoload

Автозагрузка классов-это функция добавлена, чтобы классы были загружаются (include и require) автоматически, как только созданы.

Таким образом, вместо того, чтобы вам не приходилось включать каждый раз, когда класс, который будет создавать экземпляр, вы просто установите правила, глобальный класс нагрузки.

Один из примеров - PSR4, которого я люблю глубоко.

Стандарт, который широко используется в библиотеках, которые могут быть установлены с помощью Composer;

Стандартам

По умолчанию, что большинство хранилищ используют для своих библиотек, что использование пространства имен::

NomeDoFornecedor\NomeDaBiblioteca\NomeDaClasse

Например:

namesace Laravel\Database;

class Eloquent {}
 14
Author: Wallace Maxters, 2017-01-09 16:25:07

Пространства Имен используются для группировки элементов(типов, констант и функций в php), как правило, это определяется родство между ними. Так как класс объединяет свойства и методы для решения задачи(ответственность) с namescape происходит то же самое, но в более широкие или, другими словами, он определяет, какие "компоненты" этого модуля.

Пространства имен в php это не так практично, как packges java, преимущество будет загрузить по например, весь модуль i18n, попробуйте классов для форматирования дат, валютных ценностей и модуль сохранения, который предоставляет различные классы для чтения и записи информации на различные типы технологий, таких как базы данных, реляционные, NOSQL, LDAP, etc.

И В PHP7 есть способ слегка улучшена загрузка группа класса

use app\persistencia\{DBRelaciona, DBNoSQL, LDAP};

Ручной - имен v7

 10
Author: rray, 2015-12-17 13:07:32