Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть некоторый код PHP: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Проблема в том, что метод Test2() не видит объект $objClass1. Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 21:00 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Я нашёл выход из положения, передал объект $objClass1 в качестве параметра: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Хотя считаю такое положение вещей несправедливым. Т.к. переменная $objClass1 глобальна по-отношению к функции Test2() и раз она не переобъявлена внутри функции Test2(), то вполне логично было бы использовать глобальное значение переменной. Но авторы PHP решили по-своему. Придется как-то с этим жить. Просто если у меня будет не один глобальный объект, а 50? Я что должен все 50 объектов передавать в каждую функцию? Это очень нелогично! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2015, 21:45 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, Немедленно читать любую книгу по ООП, хоть для чайников. И писать побольше кода, причем сюда постить из написанного поменьше - тапками закидают! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 00:42 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
открой для себя DI contaider ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 00:43 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 00:44 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, Леха ты дебил? Модератор: A Serious Man , прошу общаться без оскорблений. -- vkle ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 03:59 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, Вам все-таки лучше перейти на JavaScript :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 13:55 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
MikkiMouseАлексей Смирнов, Немедленно читать любую книгу по ООП, хоть для чайников. И писать побольше кода, причем сюда постить из написанного поменьше - тапками закидают! Ну и пишу и по ходу опять встретился с тем, что мне нужны какие-то глобальные свойства проекта (не переменные сессии), которые бы принимали значение на период прорисовки страницы и были доступны внутри методов классов. Как это сделать? Расскажите, если знаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 15:42 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
ScareCrowоткрой для себя DI contaider Спасибо почитал. Я так понял надо интерфейсы использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 15:48 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
A Serious ManАлексей Смирнов, Леха ты дебил? Это к чему вообще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 15:52 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Смирнов, Вам все-таки лучше перейти на JavaScript :) JAVA-script выполняет на стороне браузера. Мне нужно писать код на стороне сервера, т.к. в нем много вещей, которых пользователю видеть нельзя (доступ к базе например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 15:53 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
ScareCrow http://php.net/manual/en/language.variables.scope.php#language.variables.scope.global Спасибо! Один нормальный ответ и всех. Как раз то что надо! Про global я не знал. Попробовал, работает! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 15:54 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей СмирновScareCrow http://php.net/manual/en/language.variables.scope.php#language.variables.scope.global Спасибо! Один нормальный ответ и всех. Как раз то что надо! Про global я не знал. Попробовал, работает! Слава богу что хоть функции, объявленные вне классов доступны внутри классов. Кстати это идея. Они же могут и объекты возвращать). Тогда без global можно будет обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 16:11 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей СмирновskyANAАлексей Смирнов, Вам все-таки лучше перейти на JavaScript :) JAVA-script выполняет на стороне браузера. Мне нужно писать код на стороне сервера, т.к. в нем много вещей, которых пользователю видеть нельзя (доступ к базе например).Я Вам уже предлагал Meteor.JS. Если не хотите, то начните читать книжку по PHP и по ООП, а то Вы сейчас напишете код, который Вам потом стыдно будет показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 16:25 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
skyANAЯ Вам уже предлагал Meteor.JS. Если не хотите, то начните читать книжку по PHP и по ООП, а то Вы сейчас напишете код, который Вам потом стыдно будет показывать. Нет мне не стыдно). У меня все получилось). Я объект затолкал внутрь функции, описанной вне классов, а такие функции доступны внутри методов классов). Проблема решена). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 16:46 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Слава богу что хоть функции, объявленные вне классов доступны внутри классов. Кстати это идея. Они же могут и объекты возвращать). Тогда без global можно будет обойтись. Да всё получилось! И global тоже помог. Написал такую функцию, она возвращает объект. И эта функция доступна во всех методах классов: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 16:51 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Глупый вопрос. Наследование никак нельзя тут использовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 17:06 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей... хочеться писать своё не вникая в чужой код??? сделайте Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. и сохраняйте так. потом можно будет переделать методы этого класса не переделывая кода, если будете это хранить даже не на время прорисовки...а на сутки целые - в базе, файле, мемкеше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 17:21 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453и сохраняйте так. потом можно будет переделать методы этого класса не переделывая кода, если будете это хранить даже не на время прорисовки...а на сутки целые - в базе, файле, мемкеше... Я подозреваю, что вы мне предлагаете простое решение заменить на сложное. Пока не вижу минусов моего подхода. Я использую всего лишь обычную function. А теперь посмотрите то, что вы мне предлагаете: 1) protected 2) static 3) public static 4) :: Усложнение синтаксиса приводит к дополнительным ошибкам. Из всего вами предложенного я в своем проекте ещё даже не использовал. И все отлично работает без этих странных конструкций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 17:50 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
vkleГлупый вопрос. Наследование никак нельзя тут использовать? Наследование пока не нужно. Планирую использовать в будущем, но именно наследование в своем прямом предназначении (наследование методов и свойств родительского объекта). Пока что на этапе описания глобальных объектов и они у меня все разношерстные. Когда уже буду описывать логику там да, наследование пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 17:54 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, Почему вам в Class2 не передавать объект класса Class1 Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Class 1 у вас может быть например синглтоном. По поводу ". Просто если у меня будет не один глобальный объект, а 50? Я что должен все 50 объектов передавать в каждую функцию? Это очень нелогично!" Вы можете создать класс, в котором в качестве массива будут храниться ваши 50 объектов. И передавать только один объект.. или вообще хранить их в статическом классе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2015, 22:57 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
kunaksergeyАлексей Смирнов, Почему вам в Class2 не передавать объект класса Class1 Но в моём решении передавать ни в один класс вообще ничего не нужно. Это удобно, т.к. мне теперь не нужно вспоминать - передал я этот объект сюда или нет. Вы можете создать класс, в котором в качестве массива будут храниться ваши 50 объектов. И передавать только один объект.. или вообще хранить их в статическом классе. И мне придется перечислять все объекты в статическом классе. И опять же как к ним обращаться потом? Так: objStatichClass->objObject1->FunctionName1() ? Через два "->"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2015, 00:02 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2015, 08:48 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
Алексей Смирнов, это хорошо что человек(вы) задумывается о правильности организации кода, и о удобстве. будет вообще отлично если сразу пойдёте правильным путём. точного совета нету, ибо нету задачи - в методе класса использовать объект другого класса, это очень расплывчато, - вариантов тьма тьмущая. ==== по написанному вами, я бы советовал так. прежде всего. есть золотое правило. один метод, одно действие. примеры if($this->a != $this->b) { return $this->c; } else { return $this->d; } в общем случае - сдесь 5 действий. почему щитывание поля отдельное действие. потому что, в общем случае, чтобы оно не означало, сегодня это ....например состояние обьекта - готов или не готов к работе, завтра за этим можем стоять логика, что уже не одним флагом а несколькими определяется. поэтому если $this->f - флаг готовности, то лучше делать function is_active() { return (bool) $this->f; } завтра если у потомка добавиться ещо один флаг, $this->ff и готовность будет другой, будет достаточно переписать этот метод, а не лопатить весь код, и менять везде. с практической точки зрения - подобное должно быть для всех публичных свойств - либо функция, если оно больше подходит по логике - как проверка готовности, либо __set __get с защищёными методами _set_field_a($newvalue) _get_field_a() для защищённых, если больше похоже на действие как с готовностью, лучше все таки через метод. если не похоже, но по логике вы понимаете что врядли завтра нужно будет за простым считыванием поставить логику...можно не парится. (даже если надо будет, есть вариант убрать это поле из описания, и магическими методами добавить логики) 1) нехотите париться о передаче обьекта ... тут надо определиться. есть базовые ситуации. 1.1 - этот глобальный обьект - это обьект связаный с текущей авторизацией/правами в системе итд. тогда решением хорошим будет. логика - есть понятие текущая авторизация === есть класс который за это отвечает. все кому надо чтото из этого глобального понятия используют класс. решение - class Auth {} в нем изначально инициализируеться все, и потом все кому надо глобально чтото - используют , напр. Auth::current_user(), Auth::is_anonymous(), Auth::expiration_time(), Auth::user()->name - если поле юзер содержит обьект текущего пользователя. 1.2 - этот глобальный обьект, это ...сейчас мы обрабатываем загружаемые файлы методом пост, но понимаем что в перспективе для действия save_file() может надо будет не из поста, а на прямую передать файл. делаем Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. то есть, по умолчанию мы используем чтото глобальное, глобальный масив, класс хранящий чтото глобальное, но оставляем сразу альтернативу, использовать не по умолчанию а переданное. очень часто применяеться при создании обьектов с конфигурацией. есть грубо говоря масив настроек по умолчанию, а при создании можно передать масив новых настроек, которые закроют собой те что по умолчанию. 1.3 это глобальное связано с поведением - например, наш класс1 - это клас через который мы сохраняем файлы, а класс2 - это обработчик который физически сохраняет файл, в базе данных, а есть класс2.1 - он сохраняет на фтп сервер, а класс2.2 вообще хитро ещо кудато сует. это называеться драйвер. тогда обычно Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ---- лично у меня сложилось впечатление, что вы точно чувствуете, чего хотите добиться, но когда доходит до реализации возникают сомнения, путаются мысли... вообще как у всех по началу. выход один - рассматривать примеры если не того же, что нужно вам, то похожего - и потом появятся мысли как правильно, красиво, сделать то, что именно вам надо. надеюсь мой эпос поможет на пути создания и красивой и удобной архитектуры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2015, 11:51 |
|
||
|
Как обратиться к объекту из функции класса?
|
|||
|---|---|---|---|
|
#18+
alex564657498765453, спасибо! Вы целую статью написали. Мне к сожалению сразу сложно вникнуть и что-то ответить сейчас. Буду читать на досуге за чашкой чая. Информации очень много. А сроки (практический результат) как всегда требуют быстрейшего решения. Пока что остановился на простом решении - использовании функций, возвращающих объекты. Дальше видно будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2015, 13:47 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38849973&tid=1462106]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
| others: | 223ms |
| total: | 381ms |

| 0 / 0 |
