Создание глобальных переменных внутри класса

Статус
Закрыто для дальнейших ответов.

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
вобщем такая задача. внутри функции класса подключаются инклуды и инициализируются новые классы. как сделать их доступными вне класса? ровно как и имя переменной нужно создавать динамически. для последующего применения вне класса.
 

kein

Частный случай
Регистрация
23.11.2009
Сообщения
446
Я не до конца понял вопрос. Попробую понять наводящими вопросами)
Первое это конечно может быть $GLOBALS использовать (лично сам очень его не люблю :dry: )
Может паттерн реестр [ссылка]
 

blackcot

Well-Known Member
Регистрация
10.09.2009
Сообщения
439
Какой области видимости должны быть классы и переменные?
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
глобальной области видимости. с любого места скрипта вне функций и классов
 

blackcot

Well-Known Member
Регистрация
10.09.2009
Сообщения
439
Для переменных используйте ключевое слово global - для видимости внутри всего скрипта, или суперглобальный массив $GLOBALS - для видимости по всему сайту.
Область видимости свойств или методов класса задаётся ключевыми словами public, protected, private - общий, защищённый, закрытый соответственно. По умолчанию все свойства и методы класса имеют атрибут public.
Для вызова свойства или метода не созданного класса используйте :: если имя класса известно, конечно.
Так же, я думаю, необходимо использовать функцию __autoload, для загрузки классов - тогда Вы избежите использование include внутри класса.
 

Snickers

Быдлокодер
Регистрация
05.11.2010
Сообщения
388
у меня тут такая мысль возникла небольшая, по подгрузке.

Код:
class a 
{
    public $classes = array();
    public $vars = array();
    function __construct()
    {
        // Механизм создания этих массивов конечно другой, но суть показать результат и применение
        $this->classes = array('class1','class2');
        $this->vars = array('var1'=>'123','var2'=>'456');
    }
}
$a = new a();
foreach ($a->classes as $item)
{
    include($item.'.php');
    $$item = new $item();
}
foreach ($a->vars as $key=>$item)
{
    $$key = $item;
}
// спокойно пользуемся классами по их названиям и переменными
$class1->test();
$class2->go();
echo $var1;
echo $var2;
правильно ли так делать? и не костыль ли, или может очередной велик в моем исполнении
 
Статус
Закрыто для дальнейших ответов.
Верх Низ