вы вначале перейменовываете файл, а затем открываете файл со старым именем
Именно так и нужно. Старый переименовать и создать новый со старым именем переименованого. Новое имя мне не нужно. Он переименовался и все - больше он мне не нужен. (Добавление)
PS то есть есть файл
Вчера наткнулся на необычный глюк.
Вобщем так: есть скрипт - обработчик ошибок, который пишет ошибки в лог файл - error.log.
Пишет он значит пишет... и если размер файла превышает 100кБ, он его переименовывает в
error.время-дата.log и создает новый error.log.
Чет я не понял, почему методы вызываются автоматически..?
Работает, но непонятно как. Просматривал выполнение пошагово - как они вызываются сами? (Добавление)
Да, и при запросе наверно лучше устанавливать null , а не пустую строку.
хотя вот сидел я смотрел на свой код и понял что бессмысленно в обработчике ошибок кидать исключение.
Ну вот давайте подумаем когда может (в продакшене) вылезть нотис или варнинг? Если скрипт правильно написано то ошибки вылезти просто не могут, и соответственно забивать скрипт кучей try - catch блоков ради непонятно какой ошибки как то дико. А если вдруг предположить что я мог что-то упустить и нотис всё таки вылезет то можно просто в обработчике ошибок его записать в файл и идти дальше.
Если я не прав - поправьте.
Ну да, исключения и ошибки все же разные вещи.
DelphinPRO пишет:
Вот неудачный ты пример выбрал. Совсем неудачный.
Ну почему, удачный.
Я так и делаю в принципе. Либо через isset проверяю, либо сразу инициализирую массив с полями для возврата в форму.
Просто хотелось красивее и проще, но не получилось.
И это правильно.
Notice - значит что-то уже пошло не так. И в большинстве случаев лучшее, что при этом можно сделать - отметиться в логе и сдохнуть.
Вобщем-то да, при нормальной работе Notice не вылазит. А тот кусок где ожидается Notice можно обернуть в try...catch
Например установка переменных из $_POST. Чем каждое поле проверять на isset и !empty, лучше обернуть все в try, а в catch переадресовать юзера
Не... фигня это все.
Если написать свой обработчик ошибок и в нем кидать исключение, то тогда в блоках try будут отлавливаться ошибки - это круто.
НО! Если вывалился Notice посреди кода - вне блока try, то в этом случае все - капут. После try выполняется блок catch, а если его нет, то скрипт закончится.
То есть Notice может прервать скрипт.
Конечно можно смотреть в обработчике на тип ошибки и не бросать исключение при Notice.
Блин... я даже не знаю, что лучше. Наверно все же лучше проверять по старинке через if...else
[quote=OrmaJever][/quote]
Да, удобно, но злоупотреблять наверное не стоит.
Конечно если код работает без ошибок, то все ОК. Но если ошибки есть, то каждая ошибка будет генерировать исключение, что накладно. (Добавление)
И если есть @ в коде, то их сразу отсеивать в обработчике через error_reporting()
Если в $_POST чего-то нет, то возникнет Notice, сработает мой обработчик ошибки, в котором бросается исключение, которое можно поймать в catch, если оно нужно конечно.
А можно просто сделать что нужно, например вывести юзеру ошибку.
Короче при ошибках в try сработает catch
Таким образом можно по своему обрабатывать ошибки, а также ловить их в блоках try http://www.php.net/manual/ru/cla...rorexception.php (Добавление)
То есть по сути ошибки становятся исключениями, но и ошибками не перестают быть...
как-то так