Показать сообщение отдельно
Старый 29.05.2004, 14:46   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано mifi
Класс Global не предназначен для использования каких-либо переменных, а содержит одни статические методы-функции.
Кстати.

Здесь все правильно. Но я и говорил о том, что в Global нет механизма инициализации. при входе.

Для некоторых глобальных вещей имеет смысл применять следующую методику: в Global определяется статический метод и privet переменная. В коде идет обращение к методу. В методе делается проверка и если переменная не инициализирована, то сначала выполняется инициализация, а потом уже сам метод:

примерно так:
PHP код:
public class Global
{
      
MyType myVar;
}

static 
myType mySuperMethod()
{
     if( !
myVar )
     {
           
// инициализация
     
}
     
// что-то делаем
     
return myVar;

Этот прием часто используется при программировании пропертей в COM- и ActiveX-объектах.

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