本节介绍框架加入数据库与缓存。

数据库是mysql,使用Laravel的数据库ORM类 illuminate/database。

缓存是redis,使用predis。

修改D:\WAMP\wamp\www\framework\composer.json,内容:

{"require":{"twig/twig": "2.4.4","slim/slim": "3.9.0","illuminate/database": "*","predis/predis": "*"}
}

在命令行输入 composer update安装。

修改D:\WAMP\wamp\www\framework\frame\App.php,加载数据库配置和缓存配置,内容:

<?php
use \Psr\Http\Message\ServerRequestInterface as Request;
use \Psr\Http\Message\ResponseInterface as Response;
use Illuminate\Database\Capsule\Manager as Capsule;
use frame\Redis;// 载入composer自动加载
require ROOT_PATH . '/vendor/autoload.php';class App {public static function run() {// 启用 slim路由$configuration = ['settings' => ['displayErrorDetails' => true, // 开启错误信息],];$c = new \Slim\Container($configuration);$app = new \Slim\App($c);$app->get('/', function (Request $request, Response $response, array $args) {echo 'route err.';});$app->get('/{platform}/{controller}/{method}', function (Request $request, Response $response, array $args) {// 加载平台路由下的配置文件self::loadConfigFile(ROOT_PATH . '/app/' . $args['platform']);// 加载数据库配置self::loadDbConfig();// 加载redisself::loadRedisConfig();// 新建控制器类 调用控制器方法$class_name = "{$args['platform']}\\controller\\{$args['controller']}";$class = new $class_name;$class->{$args['method']}();});$app->run();}public static function loadRedisConfig() {Redis::init(C('', true, '__redis'));}public static function loadDbConfig() {$capsule = new Capsule;// 创建链接$capsule->addConnection(C('', true, '__database'));// 设置全局静态可访问$capsule->setAsGlobal();// 启动Eloquent$capsule->bootEloquent();}public static function loadConfigFile($path) {if(!is_dir($path)) return ;$dh = opendir($path);if($dh == false) return ;while (($file = readdir($dh)) != false) {if($file != '.' && $file != '..') {$file_path = $path . '/' . $file;if(is_file($file_path)) {$file_content = require $file_path;if(is_array($file_content)) { // 加载配置文件$config_key = '__' . str_replace('.php', '', $file);$GLOBALS[$config_key] = $file_content;}}}}closedir($dh);}}

控制器使用数据库和缓存,修改D:\WAMP\wamp\www\framework\app\index\controller\index.php,内容:

<?php
namespace index\controller;use frame\View;
use index\model as Model;
use frame\Redis;class index {protected $view;public function __construct() {$this->view = new View(C('app_name'));}public function testView() {$this->view->assign('name', 'welson');$this->view->assign(array('data' => array('tom', 'cat', 'dog')));$this->view->display('index/test');}public function testSql() {$user = new Model\User;$list = $user->getUserListByNickname('test');var_dump($list);}public function testRedis() {Redis::set('name', 'test_name', 300);echo Redis::get('name');}}

上面使用了model类,在D:\WAMP\wamp\www\framework\app\index\model\下创建model类User.php,内容:

<?php
namespace index\model;use Illuminate\Database\Eloquent\Model as Eloquent;class User extends Eloquent{protected $table = 'user';protected $primaryKey = 'nouseid';/** 根据昵称查询用户列表*/public function getUserListByNickname($nickname) {return self::where('nick_name', $nickname)->orderBy('nouseid', 'desc')->offset(1)->take(2)->get()->toArray();}}

使用的缓存类Redis封装了predis的使用,在D:\WAMP\wamp\www\framework\frame\下创建Redis.php,内容:

<?php
namespace frame;use Predis\Client;class Redis {protected static $redis;protected static $config;public static function init($config) {if(empty(self::$config)) {self::$config = $config;}}public static function getRedis() {if(empty(self::$redis)) {self::$redis = new Client(self::$config);}return self::$redis;}public static function set($key, $value, $expire = null) {$redis = self::getRedis();$res = $redis->set($key, $value);if($res && !empty($expire)) {$res = $redis->expire($key, $expire);}return $res;}public static function get($key) {$redis = self::getRedis();return $redis->get($key);}}

利用composer搭建PHP框架(四.数据库与缓存)相关推荐

  1. php 框架搭建,利用composer搭建一个PHP微框架(API微项目)

    为什么搭建一个框架(搭建一个怎样的框架) 通过搭建一个框架更好的学习PHP 搭建一个专门用于构建API的微型框架. 微型框架基本上是一个封装的路由,用来转发HTTP请求至一个闭包,控制器,或方法等等, ...

  2. composer搭建php框架,利用 Composer 一步一步构建自己的 PHP 框架(一)——基础准备...

    『Composer 一统天下的时代已经到来!』--白岩松 "一个时代结束了,另一个时代开始了." Framework Interoperability Group(框架可互用性小组 ...

  3. composer搭建php框架,用 Composer构建自己的 PHP 框架之基础准备

    『Composer 一统天下的时代已经到来!』 --白岩松 "一个时代结束了,另一个时代开始了." Framework Interoperability Group(框架可互用性小 ...

  4. Eclipse利用Maven2搭建SpringMVC框架的Web工程

    一.准备工作: 下载apache-maven--> 配置Maven_home -->下载Eclipse Maven插件 二.新建工程:   选择新建Maven Project  arche ...

  5. 利用反射搭建orm框架

    1思路 根据java反射获取属性上的 注解的value的值 然后拼接成sql去执行 这就是完成了一个orm实体关系映射 package src.Test.Reflect;import java.lan ...

  6. 利用Composer搭建企业内部仓库

    1. 在github上创建项目 2. 在服务器上创建composer包 composer init 根据创建命令步骤提示,填写相应信息,最终生成如下所示 composer.json {"na ...

  7. IBatis.Net学习笔记四--数据库的缓存模式

    在IBatis中提供了数据库缓存的模式,可以提高访问效率.对于一些不常更新的表可以直接利用IBatis的缓存方式. 要使用IBatis的数据库缓存,只要利用配置文件就可以了,实现起来比较简单:     ...

  8. Android 天气APP(四)搭建MVP框架与使用

    上一篇:Android 天气APP(三)访问天气API与数据请求 MVP/MVVM框架搭建与使用 新版------------------- 一.创建依赖模块 二.模块初始化 三.搭建网络框架 四.基 ...

  9. composer mysql_利用 Composer 一步一步构建自己的 PHP 框架(四)——使用 ORM

    利用 Composer 一步一步构建自己的 PHP 框架(四)--使用 ORM 2014-10-16 / 阅读数:65457 / 分类: PHP 回顾 经过前三篇文章 基础准备 . 构建路由 和 设计 ...

  10. 设计php框架_利用 Composer 一步一步构建自己的 PHP 框架(三)——设计 MVC

    利用 Composer 一步一步构建自己的 PHP 框架(三)--设计 MVC 2014-10-14 / 阅读数:50438 / 分类: PHP 终于可以 "一次编写,到处发布" ...

最新文章

  1. mysql 主从复制 和基于gtid的mysql主从复制
  2. Linux之make的用法讲解
  3. 关于Vue.js2.0生命周期的研究与理解
  4. 5.串口操作之API篇 SetupComm GetCommState SetCommState
  5. 前端面试instanceof_一起回归一下每日一题这些经典面试题
  6. iOS-UICollectionView
  7. 从0开始做Windows Phone 7开发
  8. 小公司出身的我,是如何拿下知名独角兽公司 Offer?
  9. Pytorch——把Numpy转化为Torch
  10. Java——一种彻底的面向对象语言
  11. python cprofile_Python Profilers 分析器
  12. 数据库迁移工具-kettle下载
  13. JavaScript--闭包的理解
  14. 带你快速入门AXI4总线--AXI4-Full篇(2)----XILINX AXI4-Full接口IP源码仿真分析(Slave接口)
  15. postgresql性能分析工具-pgstatpack-2.3.3.1
  16. win7设置定时锁定计算机,Windows7电脑屏幕如何设置不自动锁屏
  17. 计算机tpm1.2怎么启动,tpm2.0开启的方法
  18. Liunx学习笔记 - 07 - 02 正则表达式与文件格式化处理
  19. 简单易学的机器学习算法——Latent Dirichlet Allocation(理论篇)
  20. 火星人敏捷开发手册免费培训 By 火星人陈勇

热门文章

  1. python创建图形界面_Python入门四:创建第一个图形界面-Go语言中文社区
  2. java改变this指向_[Java教程]JavaScript中的this指向
  3. 20. Django进阶:生成csv文件
  4. 2021高考河北省艺术类成绩查询,2021河北省艺术类高考专业考试成绩有关规定
  5. 深入理解JVM虚拟机(5)——JVM虚拟机类加载机制概述
  6. Java中的几种设计模式:行为型模式
  7. java_eclipse中添加外部动态链接库(dll文件)的三种方式
  8. 图像直方图及均衡方法总结(二)自适应直方图均衡AHE,CLAHE
  9. 学习Lambda 表达式
  10. mysql(指RDS)验证pureftpd登录