Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Убил часа 4, поскольку впервые столкнулся с таким поведением (мож я чего забыл?!?): PHP 5.3.7 есть пара скриптов: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Но, достаточно объявить эту $s глобальной на уровне любого из файлов - всё работает... до следующего require. Это фича, которую я забыл или бага? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 01:04 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109PHP 5.3.7Мож, обновиться пора? По теме: что-то тут не так, последний var_dump печатает массив, как и следует. Только версия php актуальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 02:40 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
vkle, вложил оба файла в одном флаконе. Там отметил места, где делается var_dump() и с каким результатом. Кроме этого, переменная $shipsView -- также недоступна в вызывающем файле layout.phtml, который подключается для вывода из index.php. Второй файл, getField.php вызывается также из index.php... нифига непонятно. Это так, поразвлекаться решил, сделать примерчик в трех вариантах: ООП, на функциях и глобалах... посмотреть что красявее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 03:03 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
авторfunction setShipGroups( array $groups = null ) порадовало. авторreturn $ships; не оно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 05:18 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
ScareCrow , глупо радоваться потрохам сырого, наскоро правленного неотлаженного файла. Да и помощь требуется по другому вопросу. Хотя, если "больше нечему" - радуйтесь, лишь бы ответ нашелся... :) Конструкция - не запрещена языком: читать как "если не задано, то отсутствует". По делу: Нет, не оно. Этот возвращаемый результат - вообще не используется. Ещё если определить $ship = array('a','v'); ДО оператора включенияво втором файле, то последний по исполнению var_dump() - отдает это присваивание. Насколько понимаю, такие вложения - типовое использование... что "помешало" тут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 08:39 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, то ли у меня глаз замылился, то ли косяк "не туту" (есть же ещё "над" файлы и тот же index.php и диспетчер...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 08:43 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, вот результат вывода: AFTER DECLARE: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } AFTER INCLUDE: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } array(10) { [0]=> array(7) { ["size"]=> int(4) ["x"]=> int(7) ["y"]=> int(3) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship4g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [1]=> array(7) { ["size"]=> int(3) ["x"]=> int(11) ["y"]=> int(5) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship3g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [2]=> array(7) { ["size"]=> int(3) ["x"]=> int(8) ["y"]=> int(10) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship3g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [3]=> array(7) { ["size"]=> int(2) ["x"]=> int(2) ["y"]=> int(10) ["v"]=> string(1) "v" ["img"]=> string(25) "/public/images/ship2v.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [4]=> array(7) { ["size"]=> int(2) ["x"]=> int(7) ["y"]=> int(5) ["v"]=> string(1) "v" ["img"]=> string(25) "/public/images/ship2v.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [5]=> array(7) { ["size"]=> int(2) ["x"]=> int(9) ["y"]=> int(7) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship2g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [6]=> array(7) { ["size"]=> int(1) ["x"]=> int(11) ["y"]=> int(10) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship1g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [7]=> array(7) { ["size"]=> int(1) ["x"]=> int(13) ["y"]=> int(10) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship1g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [8]=> array(7) { ["size"]=> int(1) ["x"]=> int(4) ["y"]=> int(10) ["v"]=> string(1) "g" ["img"]=> string(25) "/public/images/ship1g.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } [9]=> array(7) { ["size"]=> int(1) ["x"]=> int(9) ["y"]=> int(11) ["v"]=> string(1) "v" ["img"]=> string(25) "/public/images/ship1v.jpg" ["visible"]=> NULL ["holes"]=> array(0) { } } } AFTER CALL: array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } Кстати, можно заметить что свойство кораблика 'visible' - "внезапно" также не передано внутрь функции setShip()... Есть идеи? Или так никто и не подскажет чего я забыл... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 09:17 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, Упс. Сделал phpinfo()? версия: PHP Version 5.3.3-7+squeeze17 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 09:21 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, нашел, вопрос закрыт, всем спасибо. :) Что получилось: 1. index.php -- как главный файл сайта готовит урл и вызывает функцию(!) диспетчера из его файла. 2. диспетчер как "умный Ваня" - разруливает урл и подключает внутри себя чего попросили и выполняет. ранее он же, далее и сбрасывал вывод через нужный подпроекту layout.phtml - все определения в области видимости функции диспетчера - то есть локальны в нем и видны подключаемым внутри него файлам (а они все получается подключаются внутри диспетчера). 3. код этой версии - работает через глобалы, в реальности ... определенные локально внутри функции диспетчера. :) ... забыл что у меня диспетчер - функция, способная рекурсивно вызываться для "до диспетчерирования урла" если это надо подпроекту... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 10:13 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, Если Вы будете продолжать писать в том же стиле, то у Вас ещё не раз возникнет данная проблема. При правильной структуре функция должна получать эту переменную как параметр... или же ссылку на эту переменную, если её надо изменить внутри функции. Но вот по всему проекту плодить внутри функций глобальные переменные - это очень не круто. Зачем вообще нужны тогда функции и классы, внутрь которых надо лазить, что бы узнать меняют ли они что-то или нет. P.S. Сколько уже работаю в web, повидал кода десятков разработчиков... Ещё ни разу не видел на практике потребности использования global переменных. По неопытности первое время даже _GET и _POST массивы в методах юзал, но уже давно от этого ушёл, так как это тоже вызывало некоторые проблемы, и если вдруг я менял что-то наспех и забывал передокументировать, то получалась полная лажа... матерился в унисон со всеми, кто читал мой код . Этого не происходит, если явно видно, что изменились аргументы функции... и их очень легко отследить и всё быстро передокументировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 13:40 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Програмёр, Пасибки. Я ставил перед собой цель реализовать один и тот же код (строго по функционалу) ... тремя разными способами. Это просто третий способ. Первоначально я из него ваще все параметры у функций поотбирал... тока глобалы и ничего больше. :) Если бы вы посмотрели на код внимательнее, то заметили что это практически downshift класса и его методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 14:29 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, Кстати, для ScareCrow: такая конструкция параметров описана в мануале для популярной функции ob_start() - см. самый первый параметр. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2014, 14:35 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, Кстати2: из всех трех методов, самый компактный и быстрый оказался как раз на глобалах 5-7мсек на ответ. Самый большой по коду - ООП, но он же самый красявый. А вот самым долгим (10-12мсек) оказалось делать всё на функциях с передачей параметров "туда-сюда". Всё, вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 00:26 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109самым долгим (10-12мсек) оказалось делать всё на функциях с передачей параметров "туда-сюда".Уточните пожалуйста, передача параметров по ссылке или по значению? PS: При передаче по значению вроде как тратится дополнительное время на копирование значения во внутреннюю переменную функции, чего не происходит при передаче по ссылке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 01:51 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
vkle, смешанно. Код - это игрушка типа морского боя... написано целиком в трех подходах (там делов-то) и профилирована. дополнительно: 1. код на глобала - глобально хранятся только общие данные в массивах. Иначе - совсем полный маразм в качестве текста. Параметры функций частично восстановлены (тут есть пример) 2. только в параметрах - массивы по ссылкам, остально значениями. Код оказался написан быстрее всего поскольку прост и понятен, но отработка - самая большая. 3. ООП классом (по 2 шт модель и конструктор). Красяво - очень. Но времени занало в 2 раза больше, потому что потребовало глубокой оптимизации кода... ой, это теперь не надо ... и это ... и тут ... фактически из него есть 2 вывода: 3.1. ООП - без качественной оптимизации по Касьянову -- унылое Г. 3.2. ООП - с правильно прописанными классами - вешь. Этот вариант - по сути единственный, который позволил модульно дополнять код игры (а давай прикрутим красявые взрывы... парную стрельбу ... более одного игрока ... и т.д.) потому и назвал "красяво". По сути, если контора просит крутого ООП спеца, а ХХ не знает ни слова из Касьянова - то тут будете править чужое, унылое Гениальное изобретение, вместо ООП. Это было ТЗ как тестовое подхожу ли в контору. Спросил про оптимизации ООП кода у собеседователя и решил, что контора мне не подходит, а из ТЗ - сделал "контрольный выстрел". :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 07:33 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Дополню. В Сети много холиваров "как лучше"... но сравнения часто некорректны в силу разных задач (теплое с мягким), поэтому и сделал ровно один функционал. Времени заняло с вечера пятницы с 21-00 до 03-00 понедельника. Всё равно у нас морозы под 30... Да, ещё: код на глобалах - самый шустрый, но и самый сложный с точки зрения "расширений" - но это и так думаю понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 08:05 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
Arhat109, осталось посмотреть как рыбенку с телефона играть на моем локалхвосте... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 08:09 |
|
||
|
[php] Недоступность глобальной переменной
|
|||
|---|---|---|---|
|
#18+
авторPS: При передаче по значению вроде как тратится дополнительное время на копирование значения во внутреннюю переменную функции, чего не происходит при передаче по ссылке. нет. копируется только при записи в них. copy-on-write однако. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.02.2014, 10:11 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=38546215&tid=1463081]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
54ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
33ms |
get tp. blocked users: |
1ms |
| others: | 256ms |
| total: | 379ms |

| 0 / 0 |
