Советы

Для написания кода с прицелом на будущее, рекомендуется не помещать много переменных, функций и классов в глобальное пространство имён. Это поможет избежать конфликтов со сторонними библиотеками, а также возможные будущие дополнения к языку. которым может быть добавлен в будущем.

Одним из самых распространённых способов избежать конфликтов классов и функций, это определять их в своём собственном, отдельном пространстве имён.

<?php

namespace MyProject;

function
my_function() {
return
true;
}

\MyProject\my_function();

Вам всё ещё нужно отслеживать уже используемые пространства имён, но единожды определившись с ним, вы можете добавить в него все функции и классы, не думая о возможных проблемах.

Максимально ограничивать количество переменных в глобальном пространстве имён является хорошей практикой. Это позволит минимизировать возможность конфликтов со сторонним кодом, который вы решите добавить в свой проект.

Замечание: Область видимости переменных

Согласно правилам области видимости в PHP переменные, определённые внутри функций и классов не могут конфликтовать с переменными, заданными в глобальной области видимости.

add a note add a note

User Contributed Notes 4 notes

up
27
willian at gt44 dot com
11 years ago
I don't think it makes sense nowadays. We have namespaces now!
up
1
kanone at rogers dot com
10 years ago
The javascript community has developed a strong cultural bias against adding anything to the global namespace.  (See e.g. Addy Osmani's article on Essential JavaScript Namespacing Patterns .)  Namespaces have been available in JS for many years and are ubiquitous.  There is also a great deal of freely available tutorial material for the interested reader.
up
1
mestresan AT gmail DOT com
10 years ago
Even though nowadays we do have namespaces, for the cases in which the user chooses to not use namespaces theses tips should be followed.
up
1
earnie at users dot sourceforge dot net
10 years ago
@willian at gt44 dot com: What about clashes of the namespace?  It is still good advice to check for previously used names before assigning anything to the global namespace.
To Top