赞
踩
OneFox控制器均放在应用目录下的controller目录;控制器的命名与类名相同、且首字母大写;自定义控制器请继承于框架核心控制器onefox\Controller。
控制器有两种模式,一种是模块模式,另一种无模块模式;在入口文件配置MODULE_MODE可开启或关闭模块模式,模块模式默认开启。
开启模块模式意味着在controller目录下有模块目录,模块目录下才是控制器文件,如下:
- ├─controller controller目录
- │ ├─index 模块目录
- │ │ ├─Index.php 控制器
关闭模块模式,目录结构如下:
- ├─controller controller目录
- │ ├─Index.php 控制器
控制器中的方法请以Action为后缀,如indexAction。
特别说明:默认模块名index(如果开启模块模式),默认控制器名Index,默认方法名index
OneFox提供一个简单的路由,即根据URL中PATH信息定位控制器。
开启模块模式后,形如:http://www.xxx.com/mtest/ctest/atest的URL会路由到模块mtest下的ctest控制器中的atest方法。若关闭模块模式,那么去掉mtest后可以路由到ctest控制器中的atest方法。
URL中可添加PATH形式的参数,如:http://www.xxx.com/mtest/ctest/atest/ptest/test,URL中ptest为参数名、test为参数值。
特别说明:如果控制器不想被路由到,使用抽象类即可
为了使用方便,OneFox没有使用模板语法,直接PHP内嵌HTML中,省去了学习模板语法的成本。
模板请放在应用目录下的tpl目录,且子目录结构应该与控制器的目录一一对应。举个栗子:开启模块模式的默认控制器对应的模板
- ├─tpl controller目录
- │ ├─index 模块目录
- │ │ ├─index.php 模板文件
从上面的目录结构可以看出,模板文件是以php为后缀的;与控制器文件名不同的是模板文件名需要小写。
引入其他模板
- <?php
- $this->import('dir_name/tpl_name', array('param_key'=>'param_value'));
需要注意的是可以通过数组将本模板的参数传递给引入的模板。
模型在应用目录下model目录中,模型的命名根据您自己的喜好,我建议是后缀加上Model,如:TestModel.php;模型中的目录结构可以多级。
自定义模型请继承于onefox\Model,直接上代码说明
- <?php
-
- namespace model;
-
- use onefox\Model;
-
- class TestModel extends Model {
-
- //数据库配置,这个一定要设置,对应的名称在database.php中
- protected $dbConfig = 'test';
-
- //对应的表名,这个可以不设置
- protected $table = 'test';
-
- public function insertTest() {
- //这个是访问数据库的方法,暂没有提供连贯操作
- return $this->db->query('select * from `posts`');
- }
- }
数据库配置直接读取config/database.php,事先配置好即可。
DB类中常用方法:
- <?php
-
- /**
- * 执行sql语句,如select, insert, update
- * 示例:
- * select: $db_obj->query('select * from `test` where `id`=:id', array('id'=>1))
- * delete: $db_obj->query('delete from `test` where `id`=:id', array('id'=>1))
- * insert: $db_obj->query('insert into `test`(name,age) values(:name,:age)', array('name'=>'ryan','age'=>20))
- * update: $db_obj->query('update `test` set name=:name where `id`=:id', array('name'=>'ryan', 'id'=>7))
- * @param string $query sql语句
- * @param array $params 参数
- * @param int $fetchmode 返回数据的模式,一般默认即可
- * @return 数据list
- */
- public function query($query, $params = null, $fetchmode = \PDO::FETCH_ASSOC){//...}
-
- /**
- * 返回一行
- * 示例: $db_obj->row('select * from `test` where `id`=:id', array('id'=>7))
- * @param string $query sql语句
- * @param array $params 参数
- * @param int $fetchmode 返回数据的模式,一般默认即可
- * @return
- */
- public function row($query, $params = null, $fetchmode = \PDO::FETCH_ASSOC){//...}
更多方法参见onefox\DB
应用类库在应用目录下的lib中,应用类库主要为本应用提供通用服务。
扩展类库在onefox同级目录的class目录下,这样设置方便其他应用调用。
还有一个需要注意的是,设置了扩展类库,在命名空间上是不需要命名根目录的,如:扩展类库下的Service类在Service目录下
- <?php
- namespace Service;
-
- class Service {
- //code...
- }
从例子中可以看出,命名空间上是不需要加”class”目录的名称的。
特别说明:使用应用类库或扩展类库,不建议将类直接写到类库的根目录下,最好有二级目录区分不同服务
自定义函数库在应用目录的function目录下,默认的文件名称为func.php。
可根据需要调整目录及文件名,分别就该FUNC_PATH、FUNC_NAME即可。
在应用目录的daemon目录中,放相关命令行执行文件,一定注意的是,每个执行文件一定要引入loader.php
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。