thinkphp 一个文件怎么调用另一个文件中的define()_thinkphp5中使用错误码

本文介绍了如何在ThinkPHP框架中创建一个错误码配置文件,通过Behavior行为类在应用初始化时加载错误信息,并定义了返回JSON数据的格式。在代码中,通过自定义函数获取错误信息并提供了IDE自动提示的解决方案。
摘要由CSDN通过智能技术生成

↑↑↑点击上方蓝字,关注编程秘籍

0c8d221ff4f98a20264525dc6024e44b.png

作者 | 理博文

来源 | 编程秘籍

转载联系授权 | 编程秘籍

内容

ab0f3d7ca9820c578a244cec9075478d.gif

1、在 config 目录下生成一个存放错误信息的配置文件 message.php

<?php return [    'code' => [        'SUCCESS'        => 200,        //1***  1开头的为系统相关的错误        'ERROR'          => 1001,        //2***  2开头的为参数相关的错误        'PARAM_ERROR'    => 2001,    ],    'info' => [        200   => '操作成功',        1001  => '操作失败',        2001  => '参数不完整',    ]];

2、在应用目录下创建一个behavior目录,在里面创建MessageBehavior.php 的钩子文件

<?php  namespace app\behavior; use Config; class MessageBehavior{    public function run() {        $codes = Config::get('message.code');        foreach ($codes as $key => $value) {            define($key,$value);        }    }}

3、把该钩子加入到应用初始化中(application/tags.php)

<?php // +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]// +----------------------------------------------------------------------// | Copyright (c) 2006~2018 http://thinkphp.cn All rights reserved.// +----------------------------------------------------------------------// | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )// +----------------------------------------------------------------------// | Author: liu21st // +----------------------------------------------------------------------// 应用行为扩展定义文件return [    // 应用初始化    'app_init'     => [        \app\behavior\MessageBehavior::class    ],    // 应用开始    'app_begin'    => [],    // 模块初始化    'module_init'  => [],    // 操作开始执行    'action_begin' => [],    // 视图内容过滤    'view_filter'  => [],    // 日志写入    'log_write'    => [],    // 应用结束    'app_end'      => [],];

4、在 common.php 文件中写方法,一个是规定返回格式,一个是获取状态码信息

/** * 页面json 输出 */if (!function_exists('resJson')) {    function resJson($code, $msg = null, $data = null){        if ($msg === null) {            // 默认填充标准错误信息            $msg = getMessage($code);        } else if (!is_string($msg)) {            // 将msg改为data用,msg为充标准错误信息            $data = $msg;            $msg = getMessage($code);        }        return json([            "code" => (int)$code,            "msg" => $msg,            "data" => $data,        ]);    }}/** * 获取错误信息 */if (!function_exists('getMessage')) {    function getMessage($code){        $info = config('message.info');        return (array_key_exists($code, $info) ? $info[$code] : '未知错误');    }}

代码中调用示例:

<?php namespace app\index\controller;use app\index\logic\AdminLogic;class IndexController{    public function index() {        $admin = new AdminLogic();        $res = $admin->selectAdmin();        return resJson(SUCCESS, $res);    }}

PS:错误码常量是在初始化应用时定义的,所以IDE如果有自动提示的话会报未定义错误,手动的在项目根目录下创建 IDETrack.php 文件,写入常量定义,以便IDE代码的追踪提示。

<?php // IDE 代码追踪自动提示(没有其它用处,仅仅为了实现自动提示功能)define('SUCCESS', 200);//1***  1开头的为系统相关的错误define('ERROR', 1001);//2***  2开头的为参数相关的错误define('PARAM_ERROR', 2001);
ThinkPHP 5 ,可以通过在 `database.php` 配置文件的 `connections` 数组定义多个数据库连接来实现多库连接。例如: ```php return [ // 默认数据库连接 'default' => 'mysql', // 数据库连接列表 'connections' => [ 'mysql' => [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'database1', // 用户名 'username' => 'root', // 密码 'password' => '', // 端口 'hostport' => '', // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', ], 'oracle' => [ // 数据库类型 'type' => 'oracle', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => 'database2', // 用户名 'username' => 'root', // 密码 'password' => '', // 端口 'hostport' => '', // 数据库编码默认采用utf8 'charset' => 'utf8', // 数据库表前缀 'prefix' => '', ], ], ]; ``` 然后在使用数据库时,可以通过指定数据库连接的方式来连接不同的数据库。例如: ```php // 使用 mysql 数据库连接查询 $users = Db::connect('mysql')->name('user')->select(); // 使用 oracle 数据库连接查询 $users = Db::connect('oracle')->name('user')->select(); ``` 需要注意的是,在使用多库连接时,如果需要使用事务操作,则需要在使用 `Db::startTrans()` 开始事务前,手动切换到对应的连接。例如: ```php // 开始 mysql 数据库连接的事务 Db::connect('mysql')->startTrans(); // 执行 mysql 数据库连接的操作 Db::connect('mysql')->name('user')->where('id', 1)->update(['name' => 'new name']); // 切换到 oracle 数据库连接 Db::connect('oracle')->startTrans(); // 执行 oracle 数据库连接的操作 Db::connect('oracle')->name('user')->where('id', 1)->update(['name' => 'new name']); // 提交事务 Db::commit(); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值