Отладка PHP – где установить точки останова?Как пройти аутентификацию?[закрыто]
-
19-08-2019 - |
Вопрос
Итак, я совсем недавно сделал шаг от специальной отладки с помощью dump
, print_r
и echo
к некоторым более сложным методам, и у меня возникают проблемы.
Я работаю с Zend Framework, Aptana и Zend Debugger.
В данный момент я пытаюсь отладить собственный контроллер, и что бы я ни пытался, я не добираюсь до точки останова, которую я понимаю, поскольку между ними и использованием меню происходит аутентификация.
Вопросы:
- Как я могу сделать так, чтобы мое приложение прервалось в момент аутентификации, вошло в браузер, перешло к определенному URI и затем продолжило отладку?
- Каковы хорошие места для установки точек останова в Zend Framework с MVC?
Решение
Вы хотите изменить данные аутентификации текущего пользователя в середине запроса? Р>
Я не думаю, что это возможно. Zend Debugger в значительной степени доступен только для чтения. Даже если бы это было так, вы предполагаете, что любой используемый вами фреймворк может справиться с этим. Это означает, что ему придется постоянно пытаться синхронизировать свое внутреннее состояние с изменяющимися входными данными.
Я думаю, что вместо того, чтобы спрашивать нас, как решить эту конкретную проблему, вы должны сказать нам, почему вам нужно изменить аутентификацию. Похоже, вы запускаете сценарий в своем отладчике, который завершается неудачно, потому что у вас нет сеанса пользователя.
Zend Debugger имеет панель инструментов браузера ( http: // files.zend.com/help/Zend-Studio-Eclipse-Help/zend_debugger_toolbar.htm ), позволяющий запустить отладчик для текущей страницы; отладчик будет иметь всю информацию, которую браузер отправил бы: куки, публиковать данные и т. д. Есть даже " отладка следующей страницы " настройка, которая помогает вам отлаживать POST-формы. Похоже, это то, что вы хотите.
Другие советы
Не проще ли было бы установить константу, например:
define('MODE_DEBUG', 1);
Затем проверьте процесс аутентификации:
if($obj->myLoginMethod() || constant('MODE_DEBUG') == 1){
}
Никто не сможет внедрить эту константу, и худшее, что может случиться, это то, что вы выйдете из режима отладки по моей ошибке...
Что вы могли бы поставить галочку перед определением:
define('MODE_DEBUG', (false !== strpos($_SERVER['HTTP_HOST'], 'dev.mysite.com') ? 1 : 0));
Может быть, вам просто нужно переосмыслить решение для дампа (мне нравится идея использования точек останова, но я вернулся к себе после икоты, как ваш опытный, и я использую Zend Studio). Для отладки своих приложений я использую Zend_Log и автор firebug для Zend_Log. Firebug выводит журнал в firebug (NB, у вас должен быть < также установлено расширение href = "http://www.firephp.org/" rel = "nofollow noreferrer"> firephp для firefox). Храните регистратор в своем реестре, и вы можете выполнить большую часть отладки, не путая ваши представления с отвратительными дампами. Р>
Хорошо, я поиграл с Zend Debugger еще немного. (ваш вопрос всколыхнул старых демонов) и я наконец понял, что такое "!" способ отладки. Чтобы ответить на ваш первоначальный вопрос по отладке после входа в систему, я бы сказал, что установите панель инструментов Zend для Firefox или IE. Справа от пункта меню «Отладка» есть выпадающий список с некоторыми опциями. Один из вариантов - & Quot; следующая страница & Quot ;. Чтобы перейти на экран входа в систему, выберите & Quot; Следующая страница & Quot; а затем введите свои учетные данные и отправьте, а следующая страница - это то, что отлажено. Р>