![]() |
глобальные переменные в php
люди выскажите свои мнения насчет глобальных переменных в php. Имею в виду пользовательские. Есть две функции, надо из первой функции взять значение нескольких переменных из второй. Return не подходит, тк уже выдается другое значение. Как сделать это правильно. Пример
function a(){ n1=1; n2=2; } function b(){ ???(n1, n2) } |
PHP код:
|
нет, я хотел сказать как избежать глобальных.
|
bruder, иначе, рули аргументами (в зависимости от их значения пусть выдает то что нужно)...
|
bruder,
Для этого есть понятие как объектно-ориентированное программирование. Создайте нужный класс и возвращайте объекты данного класса PHP код:
|
вот кстати почему я и задал собстно вопрос. Я в начале написал класс. В фирме сторонники процедурного программирования и говорят что классы громоздки и медленны. Что если несколько функций хотят от класса чтолибо надо создавать новый объект что есть не гут.
PHP код:
PHP код:
|
Цитата:
Весь мир работает с классами, потому что это удобно. Цитата:
Цитата:
|
убедительно :) Пойду переписывать на классы. Спасибо за разъяснения
|
Важно понимать различие ООП в PHP 4- и 5+ версий, т.е. это
Цитата:
Классы imo применимы там, где действительно требуется объектная структура и много private-функций. Если же проект не громоздкий, то удобнее обычные функции... т.е. необходимо самому прикинуть, что будет лучше... т.е. Цитата:
|
Цитата:
rtm - для этого есть оператор "::" Код:
class::function(); |
я думал так можно обратиться только к статичным методам в php5, но нет, проверил и правда работает. Причем проверил, конструктор не вызывается, значит не создается объект!? Какой смысл тогда делать это с new? Чтото путанно все както
|
Цитата:
|
а где можно подробно почитать о "::"? Почемуто очень мало про этот оператор написанно
|
bruder,
Оператор "::" обозначает статичный метод. Смысл его в том, чтобы использовать некую функциональность без создания объекта данного класса. Изначально это было придумано изза следущей логики: есть методы объекта, которые касаются только определённого объекта, например getName() возвращает имя определённой инстанции. А есть также методы, которые для любого объекта данного класса одинаковы, то есть статичные методы, например есть класс Person и у него метод Person::createWoman(), который создаёт инстанцию Person с предустановленными женскими характеристиками. Я в своём framework-е использую часто чисто статичные классы, то есть классы, которые содержат только статичные методы, то есть получается что-то типа библиотеки функций. Например, есть класс HtmlFormTools, который может создавать такие вещи как кнопки submit и reset, селекты с месяцами, датами, годами и временем, ну и тому подобные вещи |
да, это понятно. А почему я могу вызвать таким способом любую функцию не объявленную как static (пока не рассмативаем private). Например:
class Myclass{ function a(){ echo "my a"; } } Myclass::a(); так пашет. Все функции по умолчанию статичны? |
bruder,
хм.... видимо да - что не есть хорошо. Никогда такое не замечал. Я в любом случае статичные методы обозначаю как static, а обычные только в контексте объекта использую. Поэтому никогда не заечал, что и объектные методы могут вызываться как статичные - просто в этом случае будут естественно ошибки, если ещё использовать $this-> внутри таких функций |
Цитата:
|
Цитата:
Цитата:
PHP код:
|
Время: 15:19. |
Время: 15:19.
© OSzone.net 2001-