Phalapi框架连接其他数据库服务器的操作以及近期踩坑记录

多数据库连接

首先我们来看一下单个数据库的连接操作,这里官网的文档说得十分清楚:

数据库的配置文件为./config/dbs.php,默认使用的是MySQL数据库,所以需要配置MySQL的连接信息。servers选项用于配置数据库服务器相关信息,可以配置多组数据库实例,每组包括数据库的账号、密码、数据库名字等信息。不同的数据库实例,使用不同标识作为下标。

tables选项用于配置数据库表的表前缀、主键字段和路由映射关系,可以配置多个表,下标为不带表前缀的表名,其中__default__下标选项为缺省的数据库路由,即未配置的数据库表将使用这一份默认配置。

示例

return array(
    /**
     * DB数据库服务器集群
     */
    'servers' => array(
        'db_master' => array(                         //服务器标记
            'host'      => '127.0.0.1',             //数据库域名
            'name'      => 'phalapi',               //数据库名字
            'user'      => 'root',                  //数据库用户名
            'password'  => ''",                      //数据库密码
            'port'      => 3306,                  //数据库端口
            'charset'   => 'UTF8',                  //数据库字符集
        ),
    ),

    /**
     * 自定义路由表
     */
    'tables' => array(
        //通用路由
        '__default__' => array(
            'prefix' => 'tbl_',
            'key' => 'id',
            'map' => array(
                array('db' => 'db_master'),
            ),
        ),
    ),
);

而如果有多个数据库需要连接进行操作,则只需在servers节点下配置数据库的相关信息。注意若为其他服务器上的数据库,user必须写为数据库的用户,不能写root,密码也需要相对的user的密码。但是目前只找到利用这种配置方法实例化数据库中的一张前缀不同的表,若两个数据库中的表前缀相同还好说,但是往往不同数据库的前缀名不一致,这时就需要在tables节点下增加单张数据表的配置了(包括分表)。

'user' => array(                                                //表名
            'prefix' => 'demo_',                                         //表名前缀
            'key' => 'id',                                              //表主键名
            'map' => array(
                array('db' => 'demo'),  // 这里可以指定使用哪个库
            ),
        ),

另外一种解决办法是重新实例化一个notorm对象,如$di->notorm2 = new NotORMDatabase($di->config->get('mydbs'), $di->debug);这里我们将示例的dbs复制新增一个mydbs节点,将自己的数据库信息填入即可实现数据表前缀的统一问题。

近期踩坑记录

  1. 微信公众号网页授权登录确实不能在微信外的网页中打开,但是利用uniapp框架的webview组件在微信浏览器内却无法打开,具体原因未知。
  2. uniapp发布为h5版时需要注意在接口服务器上解决跨域问题。在项目目录./public下的init.php加\PhalApi\DI()->response->addHeaders('Access-Control-Allow-Origin', 'http://ex.example.com');即可。
PhalApi 是一个轻量级的 API 开发框架,提供了方便快捷的网络请求功能,以下是一个简单的 PhalApi 网络请求实例: 1. 创建一个名为 Test 的接口文件,文件路径为 ./PhalApi/Api/Test.php <?php namespace PhalApi\Api; use PhalApi\Api\Api; use PhalApi\Exception\BadRequestException; use PhalApi\Net\Request; class Test extends Api { public function index() { $url = 'https://www.baidu.com'; $params = array( 'key1' => 'value1', 'key2' => 'value2' ); $request = new Request($url, $params); $response = $request->post(); if ($response === false) { throw new BadRequestException('网络请求失败'); } return $response; } } 2. 访问接口,通过 POST 请求发送数据并获取响应结果 访问接口地址:http://localhost/Test 发送 POST 请求数据:'key1' => 'value1', 'key2' => 'value2' 3. 接收到请求后,创建一个 Request 对象,设置请求 URL 和请求参数 $url = 'https://www.baidu.com'; $params = array( 'key1' => 'value1', 'key2' => 'value2' ); $request = new Request($url, $params); 4. 发送网络请求,获取响应结果 $response = $request->post(); 5. 处理响应结果,并返回给客户端 if ($response === false) { throw new BadRequestException('网络请求失败'); } return $response; 通过以上实例,我们可以看到 PhalApi 网络请求的简单用法,可以轻松地完成网络请求,并获取响应结果。同时,PhalApi 还提供了丰富的网络请求方法,可以满足不同场景下的需求。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值