TG Telegram Group & Channel
Библиотека PHP программиста 👨🏼‍💻👩‍💻 | United States America (US)
Create: Update:

🔍 Как логировать все входящие параметры в методы классов

Представим, что у нас есть большой проект с кучей классов, и в одном месте какая-то логика работает не так, как ожидалось. Часто хочется понять: а с какими аргументами вообще вызывается метод?

Вот удобный способ — использовать debug_backtrace() и func_get_args():


class SomeService {
public function process($userId, $data) {
$this->logArgs(__METHOD__);
// Дальше идёт логика
}

protected function logArgs($methodName) {
$args = func_get_args();
array_shift($args); // Убираем $methodName
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1];

error_log(sprintf(
"[%s] Called from %s:%s with args: %s",
$methodName,
$trace['file'] ?? 'n/a',
$trace['line'] ?? 'n/a',
json_encode($args, JSON_UNESCAPED_UNICODE)
));
}
}


🧠 Профит: когда метод вызывается, вы сразу в логе видите:
- с какими аргументами он был вызван
- откуда он был вызван (файл и строка)

Это суперполезно в проде, когда нет возможности ставить дебаггер, а нужно поймать, что пошло не так.

📌 Совет: делайте logArgs() общим методом в базовом классе и логируйте важные вызовы на проде, оборачивая условием по уровню логирования или флагу.

👉 @php_lib

🔍 Как логировать все входящие параметры в методы классов

Представим, что у нас есть большой проект с кучей классов, и в одном месте какая-то логика работает не так, как ожидалось. Часто хочется понять: а с какими аргументами вообще вызывается метод?

Вот удобный способ — использовать debug_backtrace() и func_get_args():


class SomeService {
public function process($userId, $data) {
$this->logArgs(__METHOD__);
// Дальше идёт логика
}

protected function logArgs($methodName) {
$args = func_get_args();
array_shift($args); // Убираем $methodName
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2)[1];

error_log(sprintf(
"[%s] Called from %s:%s with args: %s",
$methodName,
$trace['file'] ?? 'n/a',
$trace['line'] ?? 'n/a',
json_encode($args, JSON_UNESCAPED_UNICODE)
));
}
}


🧠 Профит: когда метод вызывается, вы сразу в логе видите:
- с какими аргументами он был вызван
- откуда он был вызван (файл и строка)

Это суперполезно в проде, когда нет возможности ставить дебаггер, а нужно поймать, что пошло не так.

📌 Совет: делайте logArgs() общим методом в базовом классе и логируйте важные вызовы на проде, оборачивая условием по уровню логирования или флагу.

👉 @php_lib


>>Click here to continue<<

Библиотека PHP программиста 👨🏼‍💻👩‍💻




Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)