Fork me on GitHub

litephp's doc

author:hit9

email:nz2324@126.com

github:@hit9

note:litephp的语法和thinkphp很像.但比thinkphp简陋的多

1.开始一个项目

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();#分发请求

2.Hello World

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

3.目录结构

就上面的hello world, 目录结构是:

myproject
├── C #模块目录,存放控制器文件
│   └── index.class.php
├── index.php  #入口文件
├── Core/ #框架目录
├── M/ #模型目录, 控制底层数据库
├── V/ #视图目录, 存放模板文件
└── V_c/ #模板的缓存文件目录

4.url结构

index.php?c=control&a=action

上面的url将调用C/目录下的control.class.php的Ccontrol类的action方法.

默认的控制器是index, 默认的操作方法是index

5.命名规则

1.控制器

新建一个控制器sample. 需要在C目录下建立一个名字为sample.class.php的文件, 文件内需要定义一个名字为Csample的类并继承C:

class Csample extends C

2.模型

新建一个模型雷同于新建一个控制器.相应的文件为M/sample.class.php, 类为:

class Msample extends M

3.新建一个模板

新建一个模板, 在V目录下建立文件sample.html即可

6.快速实例化

可以在项目中的任何地方使用这两个函数来快速实例化:

  1. C($name) 来实例化一个控制器对象$name
  2. M($name) 来实例化一个模型$name

7.配置文件

配置文件在框架目录下的config.php中.上例即Core/config.php

框架的配置项仅有一个:

define('ERROR_REPORT', false); //关闭错误输出. 默认开启

8.使用数据库操作类

数据库操作类的语法和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';

9.使用模板引擎

需要的配置项:

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)

10.使用输入格式检查类

无需配置.

比如我们需要添加一个表单的数据到数据库.

建立一个表单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 &rarr;"></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'),