当前位置:   article > 正文

OneFox系列之业务开发_one-fox二次开发

one-fox二次开发

 

logo

控制器

控制器说明

OneFox控制器均放在应用目录下的controller目录;控制器的命名与类名相同、且首字母大写;自定义控制器请继承于框架核心控制器onefox\Controller

控制器有两种模式,一种是模块模式,另一种无模块模式;在入口文件配置MODULE_MODE可开启或关闭模块模式,模块模式默认开启。

开启模块模式意味着在controller目录下有模块目录,模块目录下才是控制器文件,如下:

  1. ├─controller controller目录
  2. │ ├─index 模块目录
  3. │ │ ├─Index.php 控制器

关闭模块模式,目录结构如下:

  1. ├─controller controller目录
  2. │ ├─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目录,且子目录结构应该与控制器的目录一一对应。举个栗子:开启模块模式的默认控制器对应的模板

  1. ├─tpl controller目录
  2. │ ├─index 模块目录
  3. │ │ ├─index.php 模板文件

从上面的目录结构可以看出,模板文件是以php为后缀的;与控制器文件名不同的是模板文件名需要小写。

引入其他模板

  1. <?php
  2. $this->import('dir_name/tpl_name', array('param_key'=>'param_value'));

需要注意的是可以通过数组将本模板的参数传递给引入的模板。

模型

模型说明

模型在应用目录下model目录中,模型的命名根据您自己的喜好,我建议是后缀加上Model,如:TestModel.php;模型中的目录结构可以多级。

自定义模型请继承于onefox\Model,直接上代码说明

  1. <?php
  2. namespace model;
  3. use onefox\Model;
  4. class TestModel extends Model {
  5. //数据库配置,这个一定要设置,对应的名称在database.php中
  6. protected $dbConfig = 'test';
  7. //对应的表名,这个可以不设置
  8. protected $table = 'test';
  9. public function insertTest() {
  10. //这个是访问数据库的方法,暂没有提供连贯操作
  11. return $this->db->query('select * from `posts`');
  12. }
  13. }

数据库说明

数据库配置直接读取config/database.php,事先配置好即可。

DB类中常用方法:

  1. <?php
  2. /**
  3. * 执行sql语句,如select, insert, update
  4. * 示例:
  5. * select: $db_obj->query('select * from `test` where `id`=:id', array('id'=>1))
  6. * delete: $db_obj->query('delete from `test` where `id`=:id', array('id'=>1))
  7. * insert: $db_obj->query('insert into `test`(name,age) values(:name,:age)', array('name'=>'ryan','age'=>20))
  8. * update: $db_obj->query('update `test` set name=:name where `id`=:id', array('name'=>'ryan', 'id'=>7))
  9. * @param string $query sql语句
  10. * @param array $params 参数
  11. * @param int $fetchmode 返回数据的模式,一般默认即可
  12. * @return 数据list
  13. */
  14. public function query($query, $params = null, $fetchmode = \PDO::FETCH_ASSOC){//...}
  15. /**
  16. * 返回一行
  17. * 示例: $db_obj->row('select * from `test` where `id`=:id', array('id'=>7))
  18. * @param string $query sql语句
  19. * @param array $params 参数
  20. * @param int $fetchmode 返回数据的模式,一般默认即可
  21. * @return
  22. */
  23. public function row($query, $params = null, $fetchmode = \PDO::FETCH_ASSOC){//...}

更多方法参见onefox\DB

Model中公共方法

  • genInsertSql:生成插入语句
  • genUpdateSql:生成更新语句
  • insert:通用插入方法

类库

应用类库

应用类库在应用目录下的lib中,应用类库主要为本应用提供通用服务。

扩展类库

扩展类库在onefox同级目录的class目录下,这样设置方便其他应用调用。

还有一个需要注意的是,设置了扩展类库,在命名空间上是不需要命名根目录的,如:扩展类库下的Service类在Service目录下

  1. <?php
  2. namespace Service;
  3. class Service {
  4. //code...
  5. }

从例子中可以看出,命名空间上是不需要加”class”目录的名称的。

特别说明:使用应用类库或扩展类库,不建议将类直接写到类库的根目录下,最好有二级目录区分不同服务

自定义函数

自定义函数库在应用目录的function目录下,默认的文件名称为func.php。

可根据需要调整目录及文件名,分别就该FUNC_PATH、FUNC_NAME即可。

CLI

在应用目录的daemon目录中,放相关命令行执行文件,一定注意的是,每个执行文件一定要引入loader.php

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小惠珠哦/article/detail/866502
推荐阅读
相关标签
  

闽ICP备14008679号