| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Extensions > Как в теле класса объявить глобалную переменную? |
| Автор: мухр 18.10.2006, 06:18 |
| Необходимо использовать в классе перепенные, объявленные вне этого класса. Переменные в классе объявляются с помощью "public". Как бы в эту область можно выцепить внешнюю переменную? |
| Автор: Mal Hack 18.10.2006, 08:11 | ||
Сам понял что сказал?
global. |
| Автор: мухр 18.10.2006, 08:14 | ||
| global - это внутри функции. Как сделать это внутри класса, чтобы они потом вызывались, как $this->var ? Где, собственно, var - изначально внешняя переменная. По-сути, мне нужно на основе внешних переменных сформировать конфигурационный массив внутри класса. Добавлено @ 08:20 Ну вот пример из мануала:
Но в переменную $var необходимо подставить значение внешней переменной. |
| Автор: -=Ustas=- 18.10.2006, 09:50 | ||
Тольк к чему такой изврат... это не правильно. |
| Автор: мухр 18.10.2006, 10:14 | ||
Можно это объявить как-нить не в теле функции, а в теле класса? Предполагается, что класс содержит несколько функций и пользуется неким общим массивом данных, объявленных внутри класса, среди которых могут быть заимствованные данные из внешних переменных.
Вот такая запись почему-то не срабатывает. Выдаётся какая-то синтаксическая ошибка. Никаких слияний строк и арифметических действий. |
| Автор: smartov 18.10.2006, 11:07 |
| мухр, перечитал доку, похоже что нельзя провозгласить глобальную переменную в теле класса - только в функциях класса. |
| Автор: -=Ustas=- 18.10.2006, 12:50 | ||
мухр, зачем делать привязку на глобальную видимость?! Сама реализация класса не должна зависеть от внешних переменных, это плохой подход. Лучше уж так:
|
| Автор: Mal Hack 18.10.2006, 16:05 |
| Через конструктор. Зачем люди придумали... |
| Автор: -=Ustas=- 19.10.2006, 09:20 |
Ну тогда в конструкторе все равно придется глобал делать. |
| Автор: <Spawn> 23.10.2006, 13:44 | ||
-=Ustas=-, Зачем это?
|
| Автор: Mal Hack 23.10.2006, 18:46 |
Еще вариант, это ссылку на объект передать, в качестве параметрп. Сам так поступаю. |
| Автор: Eugene_Bond 24.10.2006, 17:31 |
| Если речь идет о кофигурационных переменных -- для этого существет http://php.net/define |
| Автор: -=Ustas=- 24.10.2006, 20:01 |
| <Spawn>, да, не подумал сразу. |
| Автор: мухр 25.10.2006, 08:07 | ||||
Странная тут фигня происходит. На локалке-Денвере вроде нормально всё, а на сервере такая ерунда выдаётся, когда использую "public" для переменной:
Фрагмент на 74 строке следующий:
Что бы это могло быть, и как лучше исправить? |
| Автор: мухр 25.10.2006, 08:40 | ||||
Буду пользоваться следующим изворотом:
Вызывается следующим образом:
В том числе и наследование внешних данных здесь также допустимо. |
| Автор: BobiKK 25.10.2006, 13:59 |
| Вопрос: а не лучше ли это всё дело привести к паттерну регистра? |