PHP: процедурный код — использовать пространство имен или массив замыканий, чтобы избежать загрязнения глобального пространства имен?

Я только начинаю писать часть программного обеспечения с открытым исходным кодом, которое написано процедурно в качестве альтернативы OOP mvc skeleons / frameworks. Поэтому, хотя я мог бы просто написать свою собственную OOP MVC-инфраструктуру, предполагаемая цель — сделать все это процедурно. Это для целей обучения и для того, чтобы иметь готовую кодовую базу DIY для выполнения нового проекта. Я еще не полностью разбираюсь в ООП, поэтому я чувствую, что делать это таким образом — шаг в этом направлении. Тем не менее, цель этого проекта состоит в том, чтобы быть процедурной альтернативой, поэтому он должен быть написан процедурно (и я даю это предисловие, чтобы избежать ответов об использовании ООП).

После того, как я начал писать, я понял, что код сильно загрязняет глобальное пространство имен (как это обычно бывает с процедурным кодом).

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

$prefix_variableName = 'value';
prefix_functionName($var){ return $var; }

Тогда я понял, что есть лучшие способы сделать это. У меня есть две идеи:

1: Создать глобальный массив замыканий. Таким образом, единственное глобальное значение, которое я установил в коде, — это один массив.

$myApp = array(
'var1' => 'value1',
'var2' => 'value2',
'function1' => function($var1){ return $var1; },
'function2' => function($var2){ return $var2; }
//etc
);

2: Создайте пространство имен для глобального кода в верхней части каждого файла .. как ..

namespace myApp;

$var1 = 'value1';
function1($msg){ return $msg; }

Возможны ли оба эти варианта? Может ли процедурный код быть пространством имен? Какой из них является лучшим вариантом для этого обстоятельства и почему? Есть еще варианты?

0

Решение

Вы, конечно, можете использовать пространства имен для процедурного кода. Проверьте документы, чтобы увидеть, как это работает: http://php.net/manual/en/language.namespaces.basics.php

Вы должны всегда указывать пространство своего кода, чтобы предотвратить столкновение. Использование массива замыканий может привести к нежелательному поведению, например, дать пользователю возможность сбрасывать значение в глобальном массиве и код, ожидающий вызываемых ошибок.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]