PHP PSR-0 статический класс

Я пытаюсь переписать OO-сайт PHP (который слабо следует структуре MVC), чтобы он использовал пространства имен - и хочу следовать PSR-0.

На текущем сайте у меня есть класс (называемый APP), который полон статических методов, которые я вызываю повсеместно для обработки таких вещей, как получение данных конфигурации, например; APP::get_config('key'),

Очевидно, что с пространством имен мне нужно было бы позвонить \TheNameSpace\App::get_config('key'), Я часто использую этот класс, поэтому хочу избегать использования префикса пространства имен каждый раз, когда я его использую. Я вызываю в нем методы из других классов, которые обычно находятся в подпространстве имен, поэтому изменение пространства имен в верхней части файла не будет работать.

Итак, я предполагаю, что мой вопрос в том, что является самым простым способом иметь "глобальный" класс с методами, которые я могу вызывать где угодно, без необходимости каждый раз добавлять префикс к пространству имен?

3 ответа

Вверху ваших скриптов добавьте

use TheNameSpace\App as MyApp

например. Вы можете использовать его как

app = new MyApp();

в ваших сценариях. Конечно, вам не нужно использовать псевдоним здесь. Просто

use TheNameSpace\App
app = new App();

тоже будет работать

Глобальный класс, который реализует этот класс, является плохим стилем, и вы не должны делать это так:

class MyApp extends TheNameSpace\App { }

....
myApp = new MyApp();

Прочтите раздел в руководстве php по использованию / псевдонимам пространств имен.

http://www.php.net/manual/en/language.namespaces.importing.php

Вы можете исключить пространство имен с помощью "использования". Вы можете назвать это как хотите.

use TheNamespace\App as App //You can name it anything here
App:config('key');
namespace Foo;
use Bar;

Тогда вам не нужно делать \Bar\fn

Итак, в вашем случае:

namspace Foo;
use TheNameSpace\App;

App::get_config('blah')
Другие вопросы по тегам