CodeIgniter入门理解以及其他知识
CI
优雅的 CodeIgniter
CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为开发者们建立功能完善的 Web 应用程序。
入门
请求
CI框架中,所有请求必须经过index.php的转发。直接访问是非法的,这提高了框架安全性。
例如 http://127.0.0.1:8000/index.php/api/test/xx/xxxx
配置
配置文件在 /config/global.conf.php
可以配置数据库,mancache,以及全局的一些变量
通用函数/类
在 /common/ 目录下可以新建php文件,该文件可以是一个类,也可以是面向过程的一些函数。
在Controllers中调用时,请用
123 include_once("common/functions.php");或者require_once 'common/functions.php';include_once 功耗小,找不到文件时报warning
equire_once 功耗大,找不到文件时报error
架构
我要介绍的架构是最近公司的两个项目所采用的基于CI的架构。架构师也说以后要开源,那我就简单介绍一下吧。
- 在/application/models/中编写所有抽象的数据库crud方法
- 在/application/controllers/目录中根据不同客户端需求,新建不同的文件夹,例如api,h5,web等。
- 在/application/controllers/目录下新建Base.php
- Base.php放所有服务必须的函数,例如checkParams、checkSign、getCache
- Base类extends CI_Controller
- 重载__construct初始化函数,load model中需要的模型
- 在/application/controllers/的每个子目录中,例如api子目录下,创建ApiBase.php
- ApiBase extends Base
- 此文件放,当前客户端类型下所需的公共函数方法等。例如checkUserSession
- 重载__construct初始化函数,为其父函数的初始化函数
- 在/application/controllers/api中的所有类 extends ApiBase
- 在/application/controllers/api中新建test文件夹,用于单测
- test中的单测文件固定传参,用于单元测试
- 在common/目录下写好log.php文件。所有的请求都写log
库类
抽象出一种通用类,可以在system/libraries目录下观察系统库类,在applicatoin/libraries下编写自己的库类,可以覆盖系统库类
封装与暴露
我之前没有很好理解这个,导致框架设计出了很多问题,给自己挖了一个大坑。
暴露所谓暴露的是系统的可公开数据,
封装所有底层服务的数据,不可公开的函数,全部封装
其他
ffmpeg
一种开源视频图片转码神器。指定参数DIY,随意转换。
curd
百度的人称数据库的增删改查为curd。增加(Create)、读取查询(Retrieve)、更新(Update)和删除(Delete).
salt
用户密码的散列存储前别忘了加“盐”
自动报警
|
|
以上是系统log,比如最后一次访问出现了4S的时间,很明显有问题。不写报警的话我每天都要定时看log检查一下,或者开个终端tail log。很烦。
写一个shell,如果出现一秒以上的延时,就发邮件给我,岂不美哉。