model = new \app\admin\model\XhprofWatch(); $this->assign('select_list_status', $this->model::SELECT_LIST_STATUS, true); } /** * @NodeAnotation(title="添加") */ public function add() { if ($this->request->isPost()) { $this->validateWatchRegex((string) $this->request->post('regex', '')); } return $this->curdAdd(); } /** * @NodeAnotation(title="编辑") */ public function edit($id) { if ($this->request->isPost()) { $this->validateWatchRegex((string) $this->request->post('regex', '')); } return $this->curdEdit($id); } /** * 校验 PCRE 正则合法性(与导入任务 compileWatchRegexes 同一判据). */ protected function validateWatchRegex(string $regex): void { if ($regex === '') { $this->error('正则不能为空'); } error_clear_last(); if (@preg_match($regex, '') === false) { $error = error_get_last(); $message = $error !== null ? $error['message'] : preg_last_error_msg(); $this->error('正则非法(必须带定界符,如 ~think\\\\db\\\\.*~):' . $message); } } }