健壮系统服务
<h1>健壮系统服务</h1>
<ul>
<li>杜绝无效请求</li>
</ul>
<h2>访问一个不存在的方法</h2>
<ul>
<li>
<p>访问地址</p>
<ul>
<li>域名/index.php/Index/test1</li>
</ul>
</li>
<li>
<p>修改配置文件</p>
<ul>
<li>/config/app.php</li>
</ul>
<pre><code class="language-php">'show_error_msg' => true, // 显示错误信息</code></pre>
</li>
<li>
<p>复制.example.env,重命名为.env</p>
<pre><code>APP_DEBUG = true // 查看详细报错信息</code></pre>
</li>
</ul>
<h2>访问方法不存在</h2>
<ul>
<li>
<p>访问地址</p>
<ul>
<li>域名/index.php/Index/test1</li>
</ul>
</li>
<li>
<p>使用魔术方法__call()</p>
<ul>
<li>/app/BaseController.php</li>
</ul>
<pre><code class="language-php">public function __call($name, $param) {
$arr = [
'status' => 0,
'msg' => '找不到该方法',
'data' => [],
];
return json($arr, 400);
}</code></pre>
</li>
</ul>
<h2>访问控制器不存在</h2>
<ul>
<li>
<p>访问地址</p>
<ul>
<li>域名/index.php/Index1/test1</li>
</ul>
</li>
<li>
<p>建立文件</p>
<ul>
<li>/app/controller/Error.php</li>
</ul>
<pre><code class="language-php">namespace app\controller;
class Error {
public function __call($name, $param) {
$arr = [
'status' => 0,
'msg' => '找不到该控制器',
'data' => [],
];
return json($arr, 400);
}
}</code></pre>
</li>
</ul>
<h2>建立公共返回数据方法</h2>
<ul>
<li>/app/common.php</li>
</ul>
<pre><code class="language-php">function return_data ($status, $msg, $data = [], $code = 200, $header = [], $options = []) {
$arr = [
'status' => $status,
'msg' => $msg,
'data' => $data,
];
return json($arr, $code, $header, $options);
}</code></pre>
<h2>存放业务状态码及对应消息描述</h2>
<ul>
<li>/config/statuscode.php</li>
</ul>
<pre><code class="language-php">return [
'success' => 200, // 成功
'success_msg' => '成功',
'error' => 0, // 失败
'error_msg' => '失败', //
'logined' => 1, // 已登录
'logined_msg' => '已登录',
'not_login' => -1, // 未登录
'not_login_msg' => '未登录',
'user_is_register' => -2, // 已注册
'user_is_register_msg' => '已注册',
'controller_not_found' => -3, // 控制器不存在
'controller_not_found_msg' => '控制器不存在',
'action_not_found' => -4, // 方法不存在
'action_not_found_msg' => '方法不存在',
];</code></pre>
<h2>优化BaseController代码写法</h2>
<ul>
<li>/app/BaseController.php</li>
</ul>
<pre><code class="language-php">public function __call($name, $param) {
return return_data(config('statuscode.action_not_found'), config('statuscode.action_not_found_msg'));
}</code></pre>
<h2>优化Error文件</h2>
<ul>
<li>/app/controller/Error.php</li>
</ul>
<pre><code class="language-php">public function __call($name, $param) {
return return_data(config('statuscode.controller_not_found'), config('statuscode.controller_not_found_msg'));
}</code></pre>