演示地址:http://xbphp.nmfox.com/bootstrap
公告
1.优化了路由器解析
2.伪静态访问,方法里面行参不能用动态参数获取,动态参数只能用$_GET等来获取~
3.动态和伪静态访问是自动识别,无需修改配置文件
4.加强了系统自带模版引擎 可以解析多维数组变量,详情看模版引擎数组变量的写法
5.新增了获取访问的目录分组,控制器名,方法名,跟路径等方法
6.已经支持在php7运行该代码~
Api组件化的优势:
1.控制器,路由等模块都是通过Api.php来运行的
2.可以基于配置文件进行去掉加载其中一个视图或模型
3.可以加载任何开源程序的api接口
4.可以根据不同的业务需求进行变更框架
6.维护方便,可以扩展
7.控制层只负责传递数据和渲染视图,模型负责校验数据,操作数据库等。控制器和模型传递数据只需要importModel()此函数来完成
8.只支持pdo操作数据库
9.url参数太长了,怎么办?赶紧定义路由别名,又可以传入参数也可以缩短url
定义别名路由配置文件路径:/lib/conf/Route.php
RouteApi::aliasRoute('/index.html','home','test','aaa',array(3,5));
路由原伪静态访问http://localhost/XiaoBoApiPHP/public/index.php/home/test/aaa
设置路由别名访问http://localhost/XiaoBoApiPHP/public/index.php/index.html
cli模式访问:
1.先进入public目录
2.php.exe index.php /home/test/aaa/
隐藏index.php伪静态访问设置:
1.首先到httpd.conf 找到mod_rewrite.so 把前面的#去掉
2.找到AllowOverride 把None改成All
3.重启Apache 就可以访问:http://localhost/XiaoBoApiPHP/home/test/aaa
配置目录
1./lib/conf.php 配置默认访问路径和url访问参数
2./lib/core/config.xml 配置加载核心模块和自定义模块(还需在index.php配置一下)
3.建议配置虚拟目录建议配置到/public 这个目录下,会更安全
4.把storage目录给予0777权限,否则导致文件无法写入
5.目前只能对数据库的curd简单的封装,如果需要更详解,请自己行封装进行放到/lib/model/目录下
数据校验:
$user = $this->LoadModel('users');
$user->validate = array(
array(
'name'=>'id', //字段名称
'reg' => '/^\d+$/', //正则表达式
'error' => '请输入数字' //错误提示
),
array(
'name'=>'name',
'reg' => '/^\d+$/',
'error' => '请输入数字'
)
);
//获取的数据
$user->data = array(
'id' =>'aaaa',
'name' =>'dddd21111'
);
//对数据进行校验
if(!$user->validate()){
//输出错误提示
var_dump($user->validateErr);
}
控制器语法示例:
$this->getUrl(); //获取当前访问url参数
$this->getGroup();//获取当前访问分组
$this->getClass(); //获取当前访问类名
$this->getAction(): //获取当前访问的方法名
$this->getPath(); //获取网站的跟目录
$model = $this->LoadModel(); //PDO原生态操作
$wpusers = $model->db()->query('select * from wp_users'); //执行原生sql语句写法
$wpusers->execute();
$wp_users = $this->LoadModel("wp_users"); //加载wp_users模型
$wp_users ->find(); //查询wp_users表里的所有数据
$wp_users->where('`id`=51')
->join('left','xb_user','a=1 or b=2')
->join('right','config','a=3 or b=2')
->limit(1)
->group('id')
->order('id','desc')
->having('id=51')
->count();//查询行数
var_dump($a->firstSql); //打印当前sql语句
$wp_users->where(array('id'=>'1'))
->andWhere(array('xxx like'=>'%xxx%'))
->orWhere(array('xxx >='=>'xxx'))
->fields('id')
->join('left','xb_user','a=1 or b=2')
->join('right','config','a=3 or b=2')
->group('id')
->order('id','desc')
->having('id=51')
->first();//查询单行数据
->mysql数据库语法请查看/lib/Model/Api.php 里面的示例 加载模型语法:
$model = $this->importModel("WpUsers");//不带Model.php 第二参数初始化参数是数组,第三个参数默认初始化方法名
$model->test(); //调用模型文件里面方法test
模型语法:
$table = self::LoadModel("wp_users"); //加载表名
$table->find(); //查询语句 其余的写法跟控制器写法一致
视图系统自带模版引擎语法示例:
<{$a}>//普通变量
<{$a.test}> //数组变量
<{include file="路径加文件"}> //引入文件
<{foreach item=$arr key=$k val=$v}><{$k}>---<{$v}><{/foreach}> //遍历数据
<{if $a == $b }>123<{else}>2323<{/if}>//判断语句