先上源码
好戏开始啦…………
在 CI4】CodeIgniter 4 上手练习 中有基本的安装操作,这里就直接从安装后开始
一、找到 app\Config\App.php
1、修改项目为自己的域名
public $baseURL = 'http://localhost:8080/';
这个改为自己的域名,还可以添加自定义的变量,如:
public $weblibURL = 'http://test.oaci4.com/weblic/';
但是 public weblibURL = $baseURL. 'weblic/'; 这样会提示错误,现在还没有解决 @^_^@
2、隐藏路径中的 index.php,把这个
public $indexPage = 'index.php';
修改为
public $indexPage = '';
找到 public\.htaccess 文件 ,把
RewriteRule ^(.*)/$ index.php/$1 [L,R=301]
修改为
RewriteRule ^(.*)/$ index.php?/$1 [L,R=301]
是不是没看出区别,修改后会多了一个[?],同理修改
RewriteRule ^(.*)$ index.php/$1 [L]
到这里如果环境没问题,就可以运行CI的welcome了
二、开启系统日志
在 app\Config\Logger.php 文件中,找到
public $threshold = 4;
修改为自己需要的等级就可以了,日志文件会记录到 writable\logs 目录
三、数据库配置
找到 app\Config\Database.php 文件,设置默认数据库
public $defaultGroup = 'default';
可以自己修改为自己指定的数据配置,先仅支持 MySQL,PostgreSQL,SqlLite3,MySQL 默认端口 3306,PostgreSQL 默认端口 5432
更多可以查看 【官方文档】
四、缓存配置
找到 app\Config\Cache.php ,支持 Memcached、Redis 缓存,修改自己使用的缓存数据库对应的配置即可,(没有尝试同时使用两个缓存)
五、加载常用 (CI4 之前没有使用【命名空间】,…………)
1、session
使用 session 命名空间
use CodeIgniter\Config\Services;
定义静态变量
/** * ----------------------------------- * @Date 2019-04-26 * @Author Acclea * @Describe $sessionClass * ----------------------------------- */ public static $sessionClass = '';
在 initController 方法中实例化
// 加载session if(empty(self::$sessionClass)){ $services = new Services(); self::$sessionClass = $services->session(); }
这里不需要调用 session_start 方法,因为在加载时会默认调用
使用
//存储session $adminRow = array("id"=>1,"name"=>"admin",); self::$sessionClass->set($adminRow); //读取session $adminId = self::$sessionClass->get('id');
2、redis
使用 redis 命名空间,使用 Memcached 同样
use Config\Cache; use CodeIgniter\Cache\CacheFactory;
定义静态变量
/** * ----------------------------------- * @Date 2019-04-26 * @Author Acclea * @Describe redis * ----------------------------------- */ public static $redisConn = '';
在 initController 方法中实例化
// 加载redis if(empty(self::$redisConn)){ $redisFact = new CacheFactory(); $config = new Cache(); self::$redisConn = $redisFact->getHandler($config); }
使用 $adminRow 全文同一
//存储Redis $cacheKeyAdminInfo = "ci4_test_admin_info_".$adminRow['id']; $cacheKeyAdminInfoExp = 60*60*2; //读取Redis self::$adminInfo = self::$redisConn->get($cacheKeyAdminInfo);
3、加载 配置文件
使用 App,Autoload命名空间,
use Config\Autoload; use Config\App;
定义静态变量
/** * ----------------------------------- * @Date 2019-04-26 * @Author Acclea * @Describe 加载系统需要的配置 * ----------------------------------- */ public static $sysConf = [];
在 initController 方法中实例化
// 加载autoLoad配置 if(!isset(self::$sysConf['autoLoad'])){ self::$sysConf['autoLoad'] = new Autoload(); } // 加载app配置 if(!isset(self::$sysConf['app'])){ self::$sysConf['app'] = new App(); }
使用
$ref['weblibUrl'] = self::$sysConf['app']->weblibURL;
4、加载 post、get 获取提交数据
使用 ResponseTrait命名空间,
use CodeIgniter\API\ResponseTrait;
在 class 第一行 (推荐)加入
use ResponseTrait;
使用如下获取数据,
//获取通过get提交的数据, $getData = $this->request->getGet(); //获取通过post提交的数据, $postData = $this->request->getPost();
此处得到的时数组形式,获取每个参数值
$name = $postData['name'];
5、使用自定义通用方法
创建class,指定命名空间(推荐在 app\Libraries\ 目录下),调用相应方法步骤,
创建自定义方法
function refJson(int $code = 0, string $msg = "OK", array $data = array()){ $refArr = array( 'code' => $code, 'msg' => $msg, ); if($data){$refArr['data'] = $data;} $jsonStr = json_encode($refArr,JSON_UNESCAPED_UNICODE); die($jsonStr); }
引用命名空间
use App\Libraries\SelfFunc;
实例化
$selfFunc = new SelfFunc();
调用指定方法
$selfFunc->refJson(-3,"非法请求");
更多详细代码,可以在GitHub中查看