{"id":12425,"date":"2020-08-27T14:22:00","date_gmt":"2020-08-27T08:22:00","guid":{"rendered":"https:\/\/shra.ru\/?p=12425"},"modified":"2020-09-05T15:53:44","modified_gmt":"2020-09-05T09:53:44","slug":"poluchit-nomer-tekushhejj-stroki-v-php","status":"publish","type":"post","link":"https:\/\/shra.ru\/2020\/08\/poluchit-nomer-tekushhejj-stroki-v-php\/","title":{"rendered":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 PHP"},"content":{"rendered":"\n
\u0414\u043b\u044f \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c — \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0432 PHP.<\/p>\n\n\n\n\n\n\n\n
\u0414\u0430\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0430 php \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 debug_backtrace()<\/em>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0441\u0442\u0435\u043a\u0430 \u0432\u044b\u0437\u043e\u0432\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0432 \u0432\u0438\u0434\u0435 \u043c\u0430\u0441\u0441\u0438\u0432\u0430.<\/p>\n\n\n\n \u041f\u0440\u0438\u043c\u0435\u0440 \u043c\u0430\u0441\u0441\u0438\u0432\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 debug_backtrace():<\/p>\n\n\n\n \u0417\u0434\u0435\u0441\u044c \u0435\u0441\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438, \u0433\u0434\u0435 \u0431\u044b\u043b\u0430 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u043d\u0435\u043a\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f getInfo<\/em>. <\/p>\n\n\n\n \u041e\u0444\u043e\u0440\u043c\u0438\u043c \u043d\u0430\u0448\u0443 \u0438\u0434\u0435\u044e \u0432 \u0432\u0438\u0434\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043c\u0435\u0441\u0442\u0430 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435, \u043e\u0442\u043a\u0443\u0434\u0430 \u043e\u043d\u0430 \u0431\u044b\u043b\u0430 \u0432\u044b\u0437\u0432\u0430\u043d\u0430 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435:<\/p>\n\n\n\n \u0422.\u0435. \u0435\u0441\u043b\u0438 \u043c\u044b \u0432\u044b\u0437\u043e\u0432\u0435\u043c \u0435\u0451 \u0433\u0434\u0435 \u0442\u043e \u0432 \u043d\u0430\u0448\u0435\u0439 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0435, \u043e\u043d\u0430 \u0432\u0435\u0440\u043d\u0435\u0442 \u043d\u0430\u043c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n\n\n\n \u0415\u0441\u043b\u0438 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0432 \u043e\u0431\u0435\u0440\u0442\u043a\u0435 \u0434\u0440\u0443\u0433\u043e\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a \u043f\u0440\u0438\u043c\u0435\u0440\u0443 \u0442\u043e\u0439, \u0447\u0442\u043e \u043f\u0438\u0448\u0435\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0432 \u043b\u043e\u0433 \u0444\u0430\u0439\u043b, \u0442\u043e \u043d\u0443\u0436\u043d\u043e \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0433\u043b\u0443\u0431\u0436\u0435 \u0432 \u0441\u0442\u0435\u043a, \u0447\u0442\u043e\u0431\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435.<\/p>\n\n\n\n \u041e\u0444\u043e\u0440\u043c\u0438\u043c \u044d\u0442\u0443 \u0438\u0434\u0435\u044e \u0432 \u0432\u0438\u0434\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043b\u0430\u0441\u0441\u0430.<\/p>\n\n\n\n \u041e\u0441\u043d\u043e\u0432\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043a\u043b\u0430\u0441\u0441\u0430 — log \u0432\u044b\u0432\u043e\u0434\u0438\u0442 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043f\u0440\u043e\u0441\u0442\u043e \u043d\u0430 \u044d\u043a\u0440\u0430\u043d, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u044f \u043d\u0430\u0437\u0432\u0430\u043b \u043a\u043b\u0430\u0441\u0441 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u043c. \u0410 \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u043b\u043e\u0441\u044c \u0432 \u0431\u0430\u0437\u0443 \u0438\u043b\u0438 \u0432 \u0444\u0430\u0439\u043b — \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u044d\u0442\u0443 \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u0432 \u0434\u043e\u0447\u0435\u0440\u043d\u0435\u043c \u043a\u043b\u0430\u0441\u0441\u0435.<\/p>\n\n\n\n \u0412\u0442\u043e\u0440\u0430\u044f \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044c — \u0444\u0443\u043d\u043a\u0446\u0438\u044f log \u043d\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u0442 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0438 \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u0441\u043e\u0445\u0440\u0430\u043d\u044f\u044f \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043f\u0440\u044f\u043c\u043e\u0433\u043e \u0432\u044b\u0432\u043e\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u044d\u0442\u043e\u0433\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u044b \u0435\u0449\u0435 \u0434\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u044e\u0442. \u041e\u0434\u0438\u043d \u0438\u0437 \u043d\u0438\u0445 error<\/em>, \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u043d\u0430 \u0432\u0445\u043e\u0434\u0435 \u043e\u0431\u044a\u0435\u043a\u0442 Exception \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0435\u0433\u043e \u0434\u0430\u043d\u043d\u044b\u0435. \u0410 \u0432\u0442\u043e\u0440\u043e\u0439 — message<\/em> — \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0443\u0436\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e getInfo<\/em>.<\/p>\n\n\n\n \u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043a\u043b\u0430\u0441\u0441\u043e\u043c \u043f\u0440\u043e\u0441\u0442\u043e:<\/p>\n\n\n\n \u0421\u043a\u0440\u0438\u043f\u0442 \u0432\u044b\u0432\u0435\u0434\u0435\u0442 \u0447\u0442\u043e \u0442\u043e \u0432\u0440\u043e\u0434\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0433\u043e:<\/p>\n\n\n\n \u0422.\u043a. \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0435 \u043e\u0447\u0435\u043d\u044c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435, \u0442\u043e \u0434\u0430\u0432\u0430\u0439\u0442\u0435 \u0441\u0434\u0435\u043b\u0430\u0435\u043c \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u0444\u0430\u0439\u043b. \u0414\u043b\u044f \u044d\u0442\u043e\u0433\u043e \u0441\u043e\u0437\u0434\u0430\u0434\u0438\u043c \u0434\u043e\u0447\u0435\u0440\u043d\u0438\u0439 \u043a\u043b\u0430\u0441\u0441, \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u044e\u0449\u0438\u0439 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0437\u0430\u043f\u0438\u0441\u0438 \u043b\u043e\u0433\u0430 \u0432 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0439 \u0444\u0430\u0439\u043b.<\/p>\n\n\n\n \u041f\u0440\u0438 \u0438\u043d\u0438\u0446\u0438\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0438 \u043a\u043b\u0430\u0441\u0441\u0430 \u043d\u0443\u0436\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430, \u0430 \u0434\u0430\u043b\u044c\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0451 \u0442\u0435 \u0436\u0435 \u043c\u0435\u0442\u043e\u0434\u044b:<\/p>\n\n\n\n \u041d\u0443 \u0438 \u043f\u0440\u0438\u043c\u0435\u0440 \u0441 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u043e\u0439 \u0438\u0441\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f:<\/p>\n\n\n\n <\/p>\n\n\n","protected":false},"excerpt":{"rendered":" \u0414\u043b\u044f \u043b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438\u043d\u043e\u0433\u0434\u0430 \u0432\u0430\u0436\u043d\u043e \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u043a\u0430\u043a\u043e\u0435 \u0442\u043e \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0435, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0443\u043a\u0430\u0437\u0430\u0442\u044c — \u0433\u0434\u0435 \u0438\u043c\u0435\u043d\u043d\u043e \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u043e \u0441\u043e\u0431\u044b\u0442\u0438\u0435 \u0432 \u0441\u043a\u0440\u0438\u043f\u0442\u0435. \u0414\u0430\u0432\u0430\u0439\u0442\u0435 \u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043d\u043e\u043c\u0435\u0440 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0438\u043c\u044f \u0444\u0430\u0439\u043b\u0430 \u0432 PHP.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[16],"tags":[],"class_list":["post-12425","post","type-post","status-publish","format-standard","hentry","category-php"],"acf":[],"yoast_head":"\nArray\n(\n [0] => Array\n (\n [file] => D:\\OpenServer.526\\domains\\test.loc\\web\\debug_backtrace.php\n [line] => 8\n [function] => getInfo\n [args] => Array()\n )\n)<\/code><\/pre>\n\n\n\n
function getInfo() {\n $backtrace = debug_backtrace();\n $fileinfo = '';\n if (!empty($backtrace[0]) && is_array($backtrace[0])) {\n $fileinfo = $backtrace[0]['file'] . \":\" . $backtrace[0]['line'];\n }\n return $fileinfo;\n}<\/code><\/pre>\n\n\n\n
\u0412\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u043b\u043e\u0433<\/h2>\n\n\n\n
class VirtualLog {\n\n public function error($error) {\n $this->log($error->getMessage() . ' \/' \n . $error->getFile() . \":\" . $error->getLine(), 'error');\n }\n\n public function message($messageText) {\n $this->log($messageText . ' \/' . self::getInfo(1), 'info');\n }\n\n private static function getInfo($level = 0) {\n $bt = debug_backtrace();\n $fileinfo = 'Unknown place:';\n if (!empty($bt[$level]) && is_array($bt[$level])) {\n $fileinfo = $bt[$level]['file'] . \":\" . $bt[$level]['line'];\n }\n return $fileinfo;\n }\n\n public function log($message, $message_type) {\n print \"$message_type : $message \\n\";\n }\n}<\/code><\/pre>\n\n\n\n
$virtualLog = new VirtualLog();\n$virtualLog->message('Text message');<\/code><\/pre>\n\n\n\n
\ninfo : Text message \/D:\\OpenServer.526\\domains\\test.loc\\web\\debug_backtrace.php:42 <\/code><\/pre>\n\n\n\n
\u041b\u043e\u0433\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 \u0444\u0430\u0439\u043b<\/h2>\n\n\n\n
class FileLog extends VirtualLog {\n\n var $logFilename = null;\n\n function __construct($logFilename) {\n $this->logFilename = $logFilename;\n }\n\n public function log($message, $message_type = 'info') {\n file_put_contents($this->logFilename, date('Y-m-d H:i:s') \n . \" $message_type : $message \\n\", FILE_APPEND);\n }\n}<\/code><\/pre>\n\n\n\n
$fileLog = new FileLog('mylogfile.log');\n$fileLog->message('Text message');<\/code><\/pre>\n\n\n\n
try {\n throw new Exception('My error message!');\n} \ncatch (Exception $ex) {\n $fileLog->error($ex);\n}<\/code><\/pre>\n\n\n\n