author:hit9
email:nz2324@126.com
github:@hit9
note:litephp的语法和thinkphp很像.但比thinkphp简陋的多
mkdir myproject cd myproject git clone https://github.com/hit9/litephp Core mkdir C M V V_c #建立必要的项目下的目录 touch index.php#建立入口文件
其中入口文件index.php内容为:
<?php /* *file:index.php */ header("Content-type:text/html;charset=utf-8"); define('CORE_PATH','Core/');//定义框架的目录相对于入口文件的路径 require_once(CORE_PATH.'core.php');#导入框架 C::run();#分发请求
touch C/index.class.php
index.php:
<?php class Cindex extends C{ function index(){ echo 'Hello World'; } }
访问http://url-to-your-project/index.php查看hello world
就上面的hello world, 目录结构是:
myproject ├── C #模块目录,存放控制器文件 │ └── index.class.php ├── index.php #入口文件 ├── Core/ #框架目录 ├── M/ #模型目录, 控制底层数据库 ├── V/ #视图目录, 存放模板文件 └── V_c/ #模板的缓存文件目录
index.php?c=control&a=action
上面的url将调用C/目录下的control.class.php的Ccontrol类的action方法.
默认的控制器是index, 默认的操作方法是index
新建一个控制器sample. 需要在C目录下建立一个名字为sample.class.php的文件, 文件内需要定义一个名字为Csample的类并继承C:
class Csample extends C
新建一个模型雷同于新建一个控制器.相应的文件为M/sample.class.php, 类为:
class Msample extends M
新建一个模板, 在V目录下建立文件sample.html即可
可以在项目中的任何地方使用这两个函数来快速实例化:
配置文件在框架目录下的config.php中.上例即Core/config.php
框架的配置项仅有一个:
define('ERROR_REPORT', false); //关闭错误输出. 默认开启
数据库操作类的语法和wiki请见:http://hit9.org
litephp中的模型和数据库中的表名(不带前缀)对应, 并且默认主键是'id'
配置:
使用数据库操作类需要写好配置到框架目录/config.php:
<?php define('DB_HOST','localhost'); define('DB_NAME','mydb'); define('DB_USER','root'); define('DB_PASSWD','123456'); define('TABLE_PREFIX','t_'); define('DB_CHAR_SET','utf8'); define('QUERY_ERROR',true);
下面是一个添加数据的例子:
新建一个数据库mydb, 并建立一个表t_user(表前缀是t_):
create database mydb; use mydb; create table t_user( name char(20), email char(30), id int primary key auto_increment );
新建一个模型user:
<?php /*file:M/user.class.php */ class Muser extends M{ }
在控制器index中新建一个方法add:
<?php /*file:C/index.class.php */ class Cindex extends C{ function add(){ $user=M('user'); $user->db->name='小明'; $user->db->email='xiaoming@126.com'; $user->db->add(); } }
访问index.php?a=add即可添加一条数据到数据库mydb
如果表主键不是'id', 只需在user模型中添加一个字段即可:public $primary_key = 'my_key';
需要的配置项:
define('TPL_DIR','V');//模板文件的存放目录, 需要可读权限 define('TPL_C_DIR','V_c');//模板文件的缓存目录, 需要可写权限 define('TPL_REAL', true); //是否开启实时编译
模板文件的后缀是.html
新建一个模板文件sample.html:
<html> <body> 你好!{$name} </body> </html>
在index控制器中建立一个greet()方法:
<?php function greet(){ $this->tpl->assign('name','小明'); $this->tpl->display('sample'); }
访问index.php?a=greet即可看到'你好!小明'
关于tpl的用法:
* {loop $array $key $value}..........{/loop} 循环 * {loop $array $value}..........{/loop} 循环 * {if condition}...{elseif condition}..{else}..{/if} if条件语句 * {$val} 输出变量值 * {eval echo "ok";} 运行PHP代码 * {template file} 包含另外一个模版 * 对象方法: * setTplDir($dir) * setReal($real) * setExtName($ext) * setTmpDir($dir) * setU(&$dispatcher) * assign($name, $value=null) * getVal($name) * saveHtml($tFile, $html) * display($tFile)
无需配置.
比如我们需要添加一个表单的数据到数据库.
建立一个表单V/add.html:
<form action="?a=do_add" method="post" accept-charset="utf-8"> <input type="text" name="name" value=""> <input type="text" name="email" value=""> <p><input type="submit" value="Continue →"></p> </form>
在index模块中添加一个do_add方法接收post数据:
<?php class Cindex extends C{ function form(){ $this->tpl->display('add'); } function do_add(){ $filter=array( array('name','username'), array('email','email') );//过滤规则 $data=$this->input->create($filter);//创建合法数据(数组),有一个不合法即返回false if(!$data) echo $this->input->error_field;//如果检查到非法数据,显示非法数据的表单字段 else{// 否则,全部合法.添加到数据库 M('user')->db->add($data); } } }
访问index.php?a=form查看表单并填写数据做测试.
验证规则的数组语法如下:
array( array(字段名称, 验证规则), array(字段名称, 验证规则), ... );
表单验证类内置的验证规则有:
username, email, notempty, url, phone, ip, date, color, pic, tel
如果需要验证的规则不在上述之列, 可以这么用:
比如我们只需要name字段符合正则^he
的数据是合法的.name的验证规则可以这么写:
array('name','preg_match("/^he/",$name)'),
也就是说array(字段, 验证规则)中的验证规则可以是一个返回布尔真假值的php代码(字符串).其中的变量($name)会被替换成字段name对应的值.
再比如, 我们需要name字段符合长度大于6的数据是合法的.name的验证规则可以是:
array('name', 'strlen($name)>6'),