Если у Вас борьба за производительность идет уже на уровне echo vs print, то мы на совершенно разных уровнях мастерства. Я не достигну такого дзена в реальных проектах. А по последнему пункту — что прикажете делать, когда встроенная функция умеет только генерировать ошибки, но проект построен на исключениях?
Набор функций внутри неймспейса, в котором находится тестируемый класс, на мой взгляд является частью тестируемой системы. И этот набор меняется, когда тест завершает работу, т.к. в нем появляются новые функции.
Тест после выполнения должен оставлять тестируемую систему ровно в том же виде, какой она была до запуска теста. В предложенном способе это условие нарушается, насколько я понимаю.
Элегантно. Я вижу только один недостаток: после прогона теста в пространстве имен остается новая функция. Все будет хорошо, пока два разных теста в пределах одного неймспейса не захотят «замокать» функцию каждый по-своему.
Тем не менее, null все же более корректное обозначение отсутствия возвращаемого значения для php, чем void. Про превдотипы согласен, зачастую вообще пишу что-то вроде @param string|int $argName
если имеет место перегрузка.
Как должна работать связка php+сервер, чтобы один из пользователей мог убить сервер? Если php работает как cgi, то умрет пхп-шный процесс, а сервер вернет что-то вроде Internal Server Error. Если php как модуль, то он утянет за собой и один из серверных рабочих процессов, и пользователю, вероятно, ничего не вернется. Но головной процесс сервера ведь останется, или я не прав? Есть еще какие-то распространенные подходы к связыванию php с веб-сервером на шаред-хостингах?
set_error_handler(array(&$this, 'ErrorCatcher'));
Объекты и так передаются по ссылке. Зачем здесь амперсанд?
Это не совсем верно. Можно заставить данные жить и дольше, если передавать не время жизни, а unix timestamp момента, когда они должны протухнуть.
@param string|int $argNameесли имеет место перегрузка.