同步操作将从 tianqiq/fox.php 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
#fox.php 一个简陋的php mvc框架 ##特色
##目录结构
site/
app/
models/ 模型目录,可以有子目录。并不是简单是“结构体”类,而是系统业务模型,也就是说,几乎系统所有的业务功能都应该在这里 通过M($model_name)函数加载模型
controllers/ 控制器目录,可以有子目录
views/ 视图文件夹,可以有子目录 通过view($view_name)函数显示视图
tools/ 工具目录,比如发送邮件,日志,缓存等工具库 通过T($tool_name)函数加载工具
index.php 入口
fox.php fox框架
其他
##路由介绍 采用单一入口 index.php/{controller}/{action}/{id}/{1}/{2}/{3}
- 系统自动调用controllers文件夹对应的controller类和action方法,每个controller中都提供_before(action执行前),_after(action执行后)2个钩子
调用action时,会传递2个参数,第一个参数是{id}部分,而第二个参数是一个数组,也就是{1},{2},{3}url后面的部分。当然当调用的是像_def _ea _ec这样的方法是, 也会是你想当然的方式传递给你, 也是2个参数,具体什么参数,把这个项目跑起来就知道。
##rest支持 建立对应的controller,在controller中建立对应的http方法即可
class UserController{
function _get($id,$paths){
}
function _post($id,$paths){
}
function _delete($id,$paths){
}
function _put($id,$paths){
}
function _patch($id,$paths){
}
}
##DataBase类介绍 完全采用pdo预编译sql,杜绝sql注入。提供如下几个方便的操作方法
table($table_name) 设置当前操作的表名,返回this
insert($data)插入数据到表
update($data, $where, $inputs = false) 更新数据
delete($where, $inputs = false) 删除数据
get($where, $inputs = false, $field = '*') 获取一条记录
value($where, $inputs = false, $field = '*') 获取第一条记录的第一个列
find($where, $inputs = false, $field = '*')根据where条件获取数据
select($sql, $inputs = false)执行sql语句返回数据记录集
execute($sql, $inputs) 执行sql语句,返回PDOStatement
last_id() 返回最后的id()
begin_transaction() 开始事务
commit() 提交事务
roll_back() 回滚事务
以上所有的参数除了find方法外,where部分可以直接给id值,会自动转换为id=value。如:get(1), get("id=1") ,where实际上就是sql语句中where后面部分, 所有可以直接给order by,limit 等语句。
所有inputs部分,都可以不传,当然如果你where或者sql中有参数,则会出现错误。get('age>?',[10])
所有带inputs和field参数的方法,如果没有inputs参数传递,可以直接将field传递到inputs位置。 如 find("id=10",'id,name,pwd');
##数据验证类 调用方式
V:Is('qq','3423');
V:Is('email','tian@dd.com');
V:Is('.qq','323334') 验证的时候,如果类型前面带点,表示可以为空;
默认支持
'email'
'phone'
'mobile'
'url'
'id'
'currency'
'number'
'qq'
'int'
'double'
'en'
'ch'
'name'
'ip'
扩展
V:Extend($type,$reg_or_func);
$type 验证类型
$reg_or_func 一个正则表达式,或者一个函数如:
V:Extend('a','/\d+/');
V:Extend('c',function($val){
return $val=='1';
});
D($tableName = false, $db = 'def') 直接返回一个DataBase对象,参数$db为当前需要操作的数据库连接。系统支持多数据库连接,通过配置参数db实现,db如果不是简单数组,则表示系统只需要一个数据库如:
'db' => array(
'dsn' => 'mysql:host=localhost;dbname=blog',
'user' => 'root',
'pwd' => '123123',
'options' => array(),
'charset' => 'utf8'
),
如果是复杂数组如:
'db' => array(
'def'=>array(
'dsn' => 'mysql:host=localhost;dbname=blog',
'user' => 'root',
'pwd' => '123123',
'options' => array(),'charset' =>'utf8',
'charset' =>'utf8'
),
'user'=> array(
'dsn' => 'mysql:host=localhost;dbname=blog',
'user' => 'root',
'pwd' => '123123',
'options' => array(),
'charset' =>'utf8'
)
)则表示系统有多数据库。通过$db指定使用哪个。
S($key, $val) 设置数据到视图,主要用于在controller设置数据到视图
G($key) 获取视图数据中的数据
M($model,$construct_args=null) 加载一个模型,$model可以有目录,省略.php,.class.php后缀,如果是.class.php会自动new一个对象返回。如果是一个return的配置文件,也会返回相应的配置信息。
T($tool,$construct_args=null) 加载一个工具
L($path,$construct_args=null) 加载一个php文件,M,T方法都基于此方法。 注意,文件只会加载一次。
view($view) 在action中,显示一个相应的view文件 用于在controller action中
js($js) 返回js到客户端,http头是:application/javascript
none() 什么都不返回到浏览器
alert($message, $url = '#') 浏览器弹出一个alert,然后跳转到制定的url
text($text) 返回text到浏览器 http头是:text/plain
json($data) 返回json到浏览器 http头是:application/json
html($html) 返回html到浏览器
redirect($url, $code = 301) 重定向到指定的url。
##配置文件 相信一看就知道怎么回事
$config = array(
'db' => array(
'dsn' => 'mysql:host=localhost;dbname=blog',
'user' => 'root',
'pwd' => '123123',
'options' => array(),
'charset' =>'utf8'
),
'ini_files' => array(), //需要全局加载的文件
'model_path' => 'app/models',
'view_path' => 'app/views',
'controller_path' => 'app/controllers',
'tool_path' => 'app/tools',
'default_controller' => 'home',
'404' => '/404.html'
);
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。