Мне нужно иметь возможность генерировать отладочные операторы для моего кода. Например, вот код, который у меня есть:
$this->R->radius_ft = $this->TC->diameter / 24;
$this->R->TBETA2_rad = $this->D->beta2 / $rad; //Outer angle
$this->R->TBETA1_rad = $this->R->inner_beta1 / $rad; //Inner angle
Мне нужно уметь отображать результаты вычислений, чтобы их мог прочитать человек.
До сих пор я делал это (пример показывает только первую строку сверху):
$this->R->radius_ft = $this->TC->diameter / 24;
if (self::DEBUG)
print("radius_ft({$this->R->radius_ft}) = diameter({$this->TC->diameter}) / 24");
Выше напечатано что-то вроде radius_ft(1.4583) = diameter(35) / 24
и некоторые из этих строк выглядят как уравнения и хорошо прослеживаются, когда я хочу проверить вещи на бумаге или если я хочу показать промежуточную работу вычислений кому-то еще.
Проблема заключается в том, что создавать эти отладочные операторы очень сложно. Я создаю их вручную, и обычно это не проблема, но в моем текущем примере это сотни строк кода, где это необходимо сделать. Много боли.
Мне было интересно, есть ли в PHP средства, позволяющие мне распечатывать операторы, показывающие, что делает каждая строка кода. Или методы полуавтоматизации создания отладочных строк для меня.
До сих пор я обнаружил этот метод, чтобы сократить некоторые из работ …. использовать средства макросов текстового редактора.
Вставьте строку кода в TextPad (или аналогичный редактор, который поддерживает макросы). Запишите макрос и используйте средства поиска, пометки и копирования, чтобы тщательно перемещаться между специальными символами переменной, такими как $
, >
и символы, которые не являются буквенно-цифровыми или $
, >
и т. д. при копировании, извлечении и вставке частей переменной для создания моего конкретного утверждения.
Точные шаги могут отличаться для своих нужд. Мой макрос работает с одной переменной, как $this->R->radius_ft
с курсором в начале и заканчивается чем-то вроде radius_ft({$this->R->radius_ft})
, с курсором через несколько символов после конца, иногда совпадающим со следующей переменной для обработки.
Возможно, то же самое можно было бы сделать с регулярными выражениями, но мне нравится, как это делает макрос — я могу обработать переменную и перейти к следующей и просто повторить макрос с комбинацией горячих клавиш. Для меня это самая утомительная часть работы.
В качестве альтернативы — вручите человеку код и дайте ему понять его. Научите их, как читать код.
Других решений пока нет …