![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
animegirl |
|
||||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Что я нагуглила:
http://www.php.net/manual/en/runkit.configuration.php Если верить описанию, то добавив такого рода строчки в php.ini
можно будет использовать массив $_TESTT как суперглобальную переменную, однако, код:
выдаёт ошибку: Notice: Undefined variable: _TESTT in /var/www/way.way/public/test.php on line 5 Где я не так поняла мануал? -------------------- Скажи миру - НЯ! |
||||
|
|||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
отсюда
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
Gold Dragon |
|
||||||||||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
я использую что-то подобное.. и глобально и доступно и всё моё
![]()
а вот как использую
ну или простое использование с собственным контролем что и как хранить
или как в вопросе
Это сообщение отредактировал(а) Gold Dragon - 15.3.2013, 17:23 -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
||||||||||
|
|||||||||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
ksnk,
Что такое CVS? -------------------- Скажи миру - НЯ! |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
-------------------- Amazing ![]() |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
MoLeX, Я просто не поняла, что делать в итоге :(
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
animegirl, лучше не делать.
Зачем тебе эта суперглобальная переменная? Добавлено @ 21:39 собирать модуль и ставить его руками. Это сообщение отредактировал(а) Fortop - 17.3.2013, 21:40 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Да надоело в каждой функции прописывать список всего что надо, чисто эстетический вид и простота в чтение кода.
Да там одно и тоже, что с подчёркиванием, что без него, нужно ставить модуль, а он не встанет на новый ПХП, а разрабочица этого модуля забила на ПХП так как ушла работать в файсбук :( -------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Возможно стоит пересмотреть архитектуру? ![]() Писать все что нужно в каждой функции не обязательно -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Ну просто много функций, где нету результата типа false/true а какие-нибудь данные возвращаются, хочется это межскриптно упорядочить.
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Почему эти данные не могут возвращаться из функции? Зачем их обязательно передавать через суперглобальные переменные?
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Для удобства, не более и не менее
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
animegirl, Если только для удобства, то и пользуйтесь $GLOBALS
Добавлено через 53 секунды Но в целом, ограничение области видимости для возвращаемых результатов дает много больше удобства. И чем крупнее программа, тем неудобнее суперглобальные переменные -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop, Была такая мысль, но ведь если найти багу для инжекта, его можно вывести дампом, по этому хотелось переменную свою )
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Кто помешает вывести эту самую "свою"?
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Ясно, значит $_GLOBALS
-------------------- Скажи миру - НЯ! |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
animegirl, а чем тебе не понравился мой класс? Это и есть "глобальная переменная"
![]() -------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Gold Dragon, Я пока, что до классов не доросла, пытаюсь избегать этого типа программирования, пока не прижмёт, а нето будет как всегда, сначала не понимаешь и злишься, а потом нравится и убиваешь уйму времени, чтоб всё переделать на новый лад.
-------------------- Скажи миру - НЯ! |
|||
|
||||
Gold Dragon |
|
|||
![]() Призрачный ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6753 Регистрация: 1.3.2004 Где: Россия, Тамбов Репутация: 10 Всего: 71 |
animegirl, ну в данной ситуации, тебе просто нужно его подключить в самом начале и ты получишь возможность управлять своей "глобальной переменной". Примеры как использовать я показал. А про Глобальные переменные забудь.. Получила данные из глобальной, присвоила их переменной и уже дальше работай со своими переменными. И использование global в функциях это тоже зло.. Не ленись передавать функциям параметры и возвращать их.
-------------------- Нельзя жить в прошлом, оно уже прошло. Нельзя жить в будущем, оно ещё не наступило. Нужно жить в настоящем, помня прошлое и думая о будущем! |
|||
|
||||
ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 96 Всего: 386 |
А сейчас будет не так? ![]() -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! ![]() |
|||
|
||||
MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
мне больше нравится использовать возможности 5.4 и без использования классов
для версии ниже 5.4 последние два способа будут не доступны (GL()['var1'], GL()['array']['key']) -------------------- Amazing ![]() |
|||
|
||||
IgorIV |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Я так думаю, что надо привести пример функции которая показывает " список всего, что надо". Может ошибка в подходе? А вот про модуль не понял |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Ситуация, такова, у меня на каждую функцию проекта, свой ПХП файл.
Есть 2-3 файла инклуда с основными функциями и вариаблами. Функции очень сильно перемешаны друг с другом, каждый раз для вызова, чего-то нового, нужно передавать кучу вариабл,. Если я хочу добавить новую вариаблу, то мне приходится в каждом из 100+ ПХП файлов добавить эту вариаблу к вызовам функции, хотя её спокойно, можно создать в обработки другой функции, и оставить в глобальных. Я сейчас перешла на $GLOBALS, минут за 30 перевела все скрипты на новый способ общения, и в принципе очень даже рада. Вносить изменения стало намного легче. По поводу модуля. Модуль упомянутый выше runkit писался девушкой для PHP, но она перестала его обновлять, так как её утянули работать в фэйсбук, последния версия модуля датируется 2006ым годом, и он не работает с PHP 5.2+ :( -------------------- Скажи миру - НЯ! |
|||
|
||||
Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 14 Всего: 137 |
![]() ![]() ![]() |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Это указывает на ошибку в разработке самих функций. Выделение кода в функцию производится по двум признакам - повторяемость и специализация. Т.е. выделяемый код должен выполнять некие специализированные действия и/или повторятся неоднократно Таким образом в функцию совсем не нужно передавать огромную кучу переменных (в силу того что она выполняет не слишком сложные действия) Функция даже с 5тью обязательными параметрами достаточно сложна. Если у вас есть большее количество параметров, то скорее всего они поддаются группировке, а значит вы можете передавать несколько объектов или массивов вместо сотен параметров. Это сообщение отредактировал(а) Fortop - 19.3.2013, 17:08 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
IgorIV |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
animegirl, как вы там пишете?
![]() ![]() |
|||
|
||||
animegirl |
|
||||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
IgorIV,
script.php
stats.inc
Это часть кода, часть функции write_log, вариабла $GLOBALS['run_time'] ещё используется там не однократно. Это один из примеров, не хочется без надобности постить сюда кучу своего кода ![]() -------------------- Скажи миру - НЯ! |
||||
|
|||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Другой пример (без кода).
У меня используются несколько разных соединений с базой, отправка запросов делается через 2 разные функции, каждая из которых: 1. Проверяет существует ли уже соединение для её типа, если нет создаёт 2. Отправляет sql запрос по правильному каналу, если запрос не проходит создаёт репорт ошибки в файл Если оставить вариант, с передачей переменных, то их надо сначала создавать, потом передавать, а так функции становятся более автономными, что уменьшает возможность ошибки при неправильном описании их вызова. Меньше шансов на ошибку -> меньше потраченного времени, на её поиск. -------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
меняем на такой код в write_log();
можно даже на такое
Что мы имеем? Теперь нам неважно установлена ли $GLOBALS['script_name'] в вызывающем скрипте и правильно ли она установлена. Мы сами можем узнать откуда нас - write_log() вызвали. -------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
animegirl |
|
||||||||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop,
выдаёт
выдаёт
-------------------- Скажи миру - НЯ! |
||||||||
|
|||||||||
Fortop |
|
||||||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Версия php у тебя меньше 5.4
Вызываешь debug_backtrace() напрямую вне функции или подключаемого файла. Поэтому стектрейса нет. Для таких случаев можно добавить подобную проверку
Добавлено через 2 минуты и 9 секунд для получения времени работы можно пользоваться или xhproof Он запишет не только время выполнения каждого запуска скрипта, но и время выполнения отдельных функций в скрипте В самом же скрипте можно использовать getrusage()
Добавлено через 2 минуты и 58 секунд т.е. вместо того чтобы возится самому с вычислением времени и прочего - мы поручаем эту работу профайлеру и/или системе. Сами лишь пользуемся той информацией, которую они нам дают. -------------------- Мир это Я. Живее всех живых. |
||||||||
|
|||||||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
То есть перелопатить все 100+ файлов на добавление этой строчки, а потом каждый раз когда захочу подправить, что-то опять все файлы править, разве не для этого функции придумали? Спасибо за функцию getrusage(), надо будет глянуть, что она может. Ну и как я уже написла, это только часть лога ) Для статистики по MySQL тоже есть команды готовые? -------------------- Скажи миру - НЯ! |
|||
|
||||
IgorIV |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
animegirl,
Как-то так, особо не ломая код. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
IgorIV,
Замысел был красив, но я это уже проходила, чуток в другой форме, но всё равно, в $file запишется stats.inc -------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Зачем лопатить? Я же тебе показал в write_log() дописываешь код с debug_backtrace() Естественно без echo, а так как тебе нужно - т.е. с прочтением в локальную переменную и используешь ее вместо своего GLOBALS И тебе больше не нужно будет прописывать
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop,
И результат будет тот же, что и у Игоря, и что у меня два дня назад, если вызывать debug_backtrace() либо __FILE__ внутри stat.inc то выдадут они в итоге stat.inc а не то скрипт, который надо отследить. Я даже предположу, что debug_backtrace() сам использует __FILE__ ![]() -------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Что за тупые предположения? animegirl, debug_backtrace содержит имена всех методов которые были вызваны чтобы добраться до текущего участка кода Там есть намного больше того, что может тебе подуматься.
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop,
Каюсь, не посмотрела, выдачу всего массива, попробовала из файла stat.inc
Выдаёт index.php как и надо, но если перенести эти строки в другой инклуд файл, то всё смещается, на позиции 0 встаёт stat.inc а index.php уходит на позицию 1. И как теперь там искать нужное, если $GLOBALS['script_name'] используется в разных местах? -------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Как определяется его нужность? Чем определяется логика его установки? Первый скрипт, который собственно был запущен? Массив работает по принципу стека. 0й элемент - ближайший вызов Последний элемент - первый вызов Через сколько бы include у вас мой код не вызвался. Это сообщение отредактировал(а) Fortop - 20.3.2013, 01:43 -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
||||||||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop,
a.php
b.php
c.php
=
-------------------- Скажи миру - НЯ! |
||||||||
|
|||||||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
В чем вопрос?
-------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop, В том, что a.php (забыла упомянуть, что выдача с него), не в [0]
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Как это выглядит когда файлов больше 10ти я показывал выше http://forum.vingrad.ru/index.php?showtopi...t&p=2554174 Где был вызыван debug_backtrace()
А это собственно файл к которому мы обратились самым первым
-------------------- Мир это Я. Живее всех живых. |
||||
|
|||||
IgorIV |
|
||||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
![]() ![]() Посмотри вывод
b.php
c.php
animegirl.php
Это сообщение отредактировал(а) IgorIV - 20.3.2013, 20:21 |
||||||||||||
|
|||||||||||||
IgorIV |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Но мне кажется я не понял задачу? Время выполнения какого скрипта интересует?
|
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
IgorIV,
Главного, спасибо за помощь, мы вчера в глубокой ночи, всё-таки нашли решение:
-------------------- Скажи миру - НЯ! |
|||
|
||||
Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
animegirl, ну ад же
debug_backtrace() тебе нужен только в самой функции лога. Зачем ты его результат пишешь в GLOBALS? -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
animegirl |
|
|||
![]() Незнайка на Марсе ![]() ![]() Профиль Группа: Участник Сообщений: 326 Регистрация: 24.7.2011 Репутация: нет Всего: нет |
Fortop,
У меня несколько функций для сбора разных логов по надобности -------------------- Скажи миру - НЯ! |
|||
|
||||
IgorIV |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 7.9.2009 Репутация: 2 Всего: 8 |
Я так и думал, а должна быть одна,ну две. Нужно активно пользоваться возможностью передавать в функцию параметры. А что же тогда с классами будет? Твой пример прмерно должен выглядеть так. Не нало писать в функциях конкретные вещи - путь, название файла, текст.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |