1 Star 0 Fork 80

IT-LH/MicroPHP

forked from 狂奔的蜗牛./MicroPHP 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CHANGELOG.txt 51.15 KB
一键复制 编辑 原始数据 按行查看 历史
snail 提交于 2015-09-02 18:25 . No commit message
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942
#############################ver 2.3.3[2015-09-02]#############################
优化了:
1.数据验证的手机号验证规则,支持17号段手机号
修复了:
1.PDO数据库驱动RND拼写错误,更正为RAND
#############################ver 2.3.2[2015-05-15]#############################
修复了:
1.apache伪静态支持问题,新版apache在.htaccess中开启了伪静态在之后,
$_SERVER里面的PATH_INFO变量变了名字为:REDIRECT_PATH_INFO
#############################ver 2.3.1[2015-03-13]#############################
优化了:
1.分页条显示,“转到”默认没有下划线
2.其它一些代码优化
增加了:
2.增加了composer支持,麻麻再也不用担心我的类库乱七八糟了。
修复了:
1.get_post($key,$default),post_get($key,$default),
当$key存在值,如果传递了默认值$default将返回空的bug。
题外话,这次更新距离上次时间很久了,并不是停止开发了。年前入职了新浪后,学到了很多思想,审视现在框架有很多值得革命性优化的地方。所以启动了另外一个新项目,开发阶段,透漏一下新版借鉴了很多思想,解决了其它框架的短板,并把优点强化,保持microphp一贯的灵活自由,更小,更方便,更优雅,不久将会和大家见面。microphp会同步保持活跃更新的大家放心使用,新版让大家有了更多的选择。另外,很多人肯定认为这是重复造轮子,但是我认为有创新的造轮子是必要的,不然互联网甚至任何行业都会停止在前人的脚步上。
#############################ver 2.3.0[2014-10-18]#############################
优化了:
1.控制器类、模型类、Loader、输入类、规则类使用标准名称:MpController、MpModel、MpLoader、MpInput、MpRule
以前的WoniuController、WoniuModel、WoniuInput、WoniuRule可以继续使用,兼容以前版本。
2.路由器获取参数的规则。
升级提示:
1.修改入口文件里面最后两行
WoniuRouter::setConfig($system);
WoniuRouter::loadClass();
修改为:
MpRouter::setConfig($system);
MpRouter::loadClass();
即可。
2.如果使用了插件模式,修改插件入口文件plugin.php里面最后一行
WoniuRouter::setConfig($system);
修改为:
MpRouter::setConfig($system);
即可。
3.如果自定义了loader,ver2.2.14以前是自定义了loader必须继承WoniuLoader,现在修改为继承MpLoader即可。
4.如果自己使用了WoniuRouter::setConfig($system);WoniuRouter::loadClass();
修改为MpRouter::setConfig($system);MpRouter::loadClass();即可
#############################ver 2.2.13[2014-10-07]#############################
优化了:
1.精简了托管session的几个类
2.优化了session管理机制,对于session通用配置$system['session_handle']['common'],无论系统是否托管session,都会起作用。
3.精简了数据库驱动
增加了:
1.memcached存储session,对应的系统配置是$system['session_handle']['memcached']
2.为$this->input->xxx增加了一批快捷xxx的函数,参数一致,具体参数可以参考手册“输入”部分,xxx具体如下:
args() 对应:$this->input->parameters()
xss_clean() 对应:$this->input->xss_clean()
server() 对应:$this->input->server()
session() 对应:$this->input->session()
get() 对应:$this->input->get()
post() 对应:$this->input->post()
cookie() 对应:$this->input->cookie()
cookie_raw() 对应:$this->input->cookieRaw()
get_post() 对应:$this->input->get_post()
post_get() 对应:$this->input->post_get()
get_int() 对应:$this->input->get_int()
post_int() 对应:$this->input->post_int()
get_post_int() 对应:$this->input->get_post_int()
post_get_int() 对应:$this->input->post_get_int()
get_time() 对应:$this->input->get_time()
post_time() 对应:$this->input->post_time()
get_post_time() 对应:$this->input->get_post_time()
post_get_time() 对应:$this->input->post_get_time()
get_datetime() 对应:$this->input->get_datetime()
post_datetime() 对应:$this->input->post_datetime()
get_post_datetime() 对应:$this->input->get_post_datetime()
post_get_datetime() 对应:$this->input->post_get_datetime()
get_rule() 对应:$this->input->get_rule()
post_rule() 对应:$this->input->post_rule()
get_post_rule() 对应:$this->input->get_post_rule()
post_get_rule() 对应:$this->input->post_get_rule()
3.增加了下面快捷函数,参数一致,具体参数可以参考手册“输出”部分
set_cookie() 对应:$this->input->setCookie()
set_cookie_raw() 对应:$this->input->setCookieRaw()
修复了:
1.$this->input->xxx()默认值有时不起作用的问题。
#############################ver 2.2.12[2014-09-01]#############################
增加了:
1.$this->lib($file_name, $alias_name = null,$new=true),增加了第三个参数$new,默认true。
默认情况下,$this->lib()加载类库的时候,会new一个类的对象。
有时候我们只是为了包含进来类库文件,或者类是不可实例化的,那么我们只要指定$new=false即可。
然后$this->lib()加载类库的时,只是包含文件,并不会new一个类的对象,此时xxx类对应的$this->lib->xxx不再可用,是null。
2.系统配置中,类库自动加载的时候,可以指定new参数。
$system['library_file_autoload'] = array();
自动加载的library文件,比如array($item);
$item是library文件名或者"配置数组",不包含后缀。
比如: ImageTool 或者配置数组array('ImageTool'=>'image'),或者配置数组array('ImageTool'=>'image','new'=>fasle)
配置数组的作用是为长的类库名用别名代替.
3.$this->helper($file_name, $is_config = true),增加了第二个参数$is_config,默认true。
默认情况下,$this->helper()加载helper文件的时候,会把文件里面的全局变量放到self::$config里面。
有时候我们只想要包含helper文件,不对里面的变量进行处理。那么可以通过指定第二个参数$is_config=false即可。
4.系统配置中,helper自动加载的时候,可以指定$is_config参数。
$system['helper_file_autoload] = array();
自动加载的helper文件,比如array($item);
$item是helper文件名或者"配置数组",不包含后缀。
比如: html 或者配置数组array('html'=>false),这里的数组key是helper文件,值就是$is_config参数,是true或者false。
修复了:
1.sqlite_escape_string在PHP5.4及以上的版本中被废弃了,使用SQLite3::escapeString()代替。
2.表模型的search方法报错的问题。
优化了:
1.精简了缓存类
2.$this->page()产生的分页条,当页数大于2页时再显示,这样避免了出现尴尬的一页的时候,还有下一页。
3.优化了对路由字符串的解析,能够支持get表单通过name指定要访问的控制器方法。
4.移除了$system['folder_auto_init']系统配置,下载的代码中已经包含了完整的文件夹结构,
这个自动建立文件夹功能有些鸡肋,为了提高性能移除掉。
5.优化了xss过滤方法:$this->input->xss_clean()。
升级提示:
#############################ver 2.2.11[2014-07-28]#############################
优化了:
1.缓存启动,自动模式搜索顺序修改为:apc,files,sqlite,memcached,redis,wincache,xcache,memcache
修复了:
1.使用mysql存储session的时候,session不会自动延期的问题。
2.使用mysqli数据库驱动的时候,解决了报Deprecated: mysql_escape_string()的问题,5.3以后不再使用该函数。
#############################ver 2.2.10[2014-06-24]#############################
增加了:
1.增加了$this->input->route_query()方法,返回的是系统最终使用的路由字符串.
该方法在自定义了路由之后,方面查看自己的路由规则替换的结果是否正常。
2.$this->input->xss_clean($var),$var支持数组了,一维或者多维数组都可以。
修复了:
1.缓存驱动为files和sqlite时,设置过期时间为0,让缓存数据不过期,无效的问题。
#############################ver 2.2.9[2014-06-01]#############################
增加了:
1.增加了表单验证exists[table.col,col1:val1,...]规则。
规则说明:
(1).如果表单元素的值在指定数据表的字段中不存在则返回false,如果存在返回true
(2).比如exists[cat.cid],那么验证类会去查找cat表中cid字段有没有与表单元素一样的值
(3).cat.cid,cat是表名称(不要带前缀)cid是字段名称。
cat.cid后面还可以指定附加的where条件。
比如:exists[users.uname,user_id:2,...] 可以多个条件,逗号分割。
上面的规则生成的where条件就是array('uname'=>$value,'user_id'=>2,....)
2.cookie键前缀配置,$system['cookie_key_prefix'] = '';
在使用$this->setCookie()和$this->input->cookie()设置和获取cookie的时候key使用的前缀。
使用前缀的目的:避免同名的cookie在主域名和子域名之间发生冲突
提示:
如果不想使用前缀,可以使用方法:$this->setCookieRaw()和$this->input->cookieRaw()设置和获取cookie
3.$this->setCookie($key, $value, $life = null, $path = '/', $domian = null, $http_only = false)
增加了$http_only参数,允许设置一个cookie不能通过脚本访问。
4.$this->checkData(Array $rule, Array $data = NULL, &$return_data = NULL, $db = null)
增加了$db参数,当验证的数据不是当前默认的数据库连接时,可以指定验证数据时使用的数据库连接对象。
$db是$this->databse($config = NULL, $is_return = false, $force_new_conn = false)返回的数据库对象。
升级提示:
1.在系统配置里面加一项:
$system['cookie_key_prefix'] = '';
#############################ver 2.2.8[2014-05-26]#############################
增加了:
1.当视图文件夹配置是数组的时候,$this->view($view_name, $data = null, $return = false)中的$view_name支持指定视图配置文件夹。
比如:
1.$system['view_folder'] ​=array('sys'=>$view_path1,'user'=>$view_path2);
那么可以通过$this->view('sys:index');指定使用$view_path1下面的index.view.php视图文件
2.$system['view_folder'] ​=array($view_path1,$view_path2);
那么可以通过$this->view('0:index');指定使用$view_path1下面的index.view.php视图文件
可以看到:可以通过在视图路径前面加上"键:"即可指定视图文件夹,键就是视图配置文件夹配置数组的键。
提示:
如果没有指定键,默认会遍历所有视图文件夹寻找视图。
2.当视图文件夹配置是数组的时候,$this->view_path($view_name, $path_key = 0)
$view_name也支持类似$this->view()中$view_name的用法来指定视图配置文件夹。
这种用法可以取代第二个参数。
3.函数dbInfo($group = NULL, $key = NULL)增加了$key参数,$key就是配置组的键,指定了$key可以获取指定组的键对应的值
修复了:
1.STRICT:Non-static method WoniuLoader::model() should not be called statically, assuming $this from incompatible context
报错的问题。
#############################ver 2.2.7[2014-05-18]#############################
优化了:
1.在伪静态模式下querystring的处理。
2.对querystring的解析。
增加了:
1.系统函数:url(),生成url链接。
可以在第一个参数开始加上:#用来控制url中显示入口文件名称和?用来控制url使用相对路经。
默认不显示入口文件名称,使用绝对路经。
$system['url_rewrite'] = FALSE;时的使用示例:
1. url('#?')
2. url('#?welcome.index')
3. url('?#welcome.index','aa','bb')
4. url('?welcome.index',array('a'=>'bb','b'=>'ccc'),'dd','ee')
5. url('#welcome.index',array('a'=>'bb','b'=>'ccc'))
6. url('welcome.index','dd','ee',array('a'=>'bb'))
7. url('','aa','bb')
8. url('',array('a'=>'bb','b'=>'ccc'),'dd','ee')
9. url('',array('a'=>'bb','b'=>'ccc'))
示例输出如下:
1. indexfortest.php
2. indexfortest.php?welcome.index
3. indexfortest.php?welcome.index/aa/bb
4. ?welcome.index/dd/ee&a=bb&b=ccc
5. /microphp/tests/indexfortest.php?welcome.index&a=bb&b=ccc
6. /microphp/tests/?welcome.index/dd/ee&a=bb
7. /microphp/tests/?aa/bb
8. /microphp/tests/?dd/ee&a=bb&b=ccc
9. /microphp/tests/?a=bb&b=ccc
2.系统函数:urlPath($subpath = null),获取入口文件所在目录url路径。
使用示例:
1. urlPath('../public/test/')
示例输出如下:
1. /microphp/public/test
3.系统函数:path($subpath = null),获取入口文件所在目录绝对路径。
使用示例:
1. path('/public/test/')
示例输出如下:
1. /home/pm/gitcode/microphp/tests/public/test
4.系统函数:dump($arg=null,$_),打印变量内容,参数和var_dump一样。
5.可以像下面加载数据库了,也就是第一个参数支持字符串,字符串即$system['db']的key;
(1).$this->database('default');
$this->db变成了使用$system['db']['default']配置组的数据库连接。
(2).$this->database('default',true);
$this->db保持原来不变,这个方法会返回一个使用$system['db']['default']配置组的数据库对象。
(3).$this->database('pdo');
$this->db变成了使用$system['db']['pdo']组配置的数据库连接。
(4).$this->database('pdo',true);。
$this->db保持原来不变,这个方法会返回一个使用$system['db']['pdo']配置组的数据库对象。
6.系统函数:chRsKey($rs, $col),改变结果集数组key。
7.$this->input增加了获取路由各种信息的方法。
具体如下:
(1).$this->input->module_name()
hmvc模块名称,没有模块就为空
(2).$this->input->method_path()
url中方法的路径,比如:1.home.index , 2.user.home.index ,user是文件夹
(3).$this->input->method_name()
url中方法名称,比如:index
(4).$this->input->method_prefix()
$system配置中方法前缀,比如:do
(5).$this->input->controller_path()
url中控制器的路径,比如:1.home 2.user.home ,user是文件夹
(6).$this->input->controller_name()
url中控制器名称,比如:home
(7).$this->input->folder_name()
url中文件夹名称,没有文件夹返回空
(8).$this->input->controller_file()
请求的控制器文件绝对路径,比如:/home/www/app/controllers/home.php
(9).$this->input->class_name()
请求的控制器类名称,比如:Home
(10).$this->input->class_method_name()
请求的控制器方法名称,比如:doIndex
(11).$this->input->parameters($key = null)
传递给控制器方法的所有参数的数组,参数为空时返回空数组
$key 参数的索引从0开始,如果传递了索引那么将返回索引对应的参数,不存在的索引将返回null
比如:
1.home.index/username/1234,那么返回的参数数组就是:array('username','1234')。
2.如果传递了$key,比如$key是1, 那么将返回1234。如果$key是2那么将返回null。
8.增加了表单验证规则生成器类$this->rule,所有的表单验证规则都可以通过$this->rule->xxx()获取,而且每个方法都有良好的注释。
这个功能在自动提示的ide中非常有用,大大提高编码率。
9.增加了实例化一个表模型函数table($table_name,$db=null);
返回的是WoniuTableModel类对象,WoniuTableModel类继承了WoniuModel类。
提示:
1.使用table()之前要确定一下$system['table_cache_folder']文件夹是否存在,该文件夹用来缓存表字段信息。
2.如果后期修改了表结构增加或者删除了字段,记得删除1中文件夹里面的对应表缓存文件,名字是:表名称.php。
实用的方法如下:
$table_model=table('user');
(1).find($values, $is_rows = false, $order_by = null)方法,查询数据
find方法非常灵活,下面给出几个使用示例:
1.获取主键是10的记录
$table_model->find(10)
2.获取主键是10,11的两个记录
$table_model->find(array(10,11),true)
3.根据条件获取一条记录
$table_model->find(array('id'=>100))
4.根据条件获取多条记录
$table_model->find(array('id >'=>10),true)
5.获取主键是10,11的两个记录,并用id排序
$table_model->find(array(10,11),true,'id desc')
6.根据条件获取多条记录,并用id排序
$table_model->find(array('id >'=>10),true,'id asc')
(2).findAll($where = null, $orderby = NULL, $limit = null, $fileds = null),获取所有数据。
下面是几个例子:
1.查询表所有数据。
$table_model->findAll()
2.查询表中type为1的所有数据。
$table_model->findAll(array('type'=>1))
3.查询表中type为1的所有数据,并且按着id倒序排列。
$table_model->findAll(array('type'=>1),'id desc')
4.查询表中type为1的按着id倒序排列的100条数据。
$table_model->findAll(array('type'=>1),'id desc',100)
5.查询表中type为1的按着id倒序排列的100条数据,同时只获取id和name两个字段。
$table_model->findAll(array('type'=>1),'id desc',100,'id,name')
(3).findCol($col, $where, $is_rows = false, $order_by = null)方法,查询字段数据
findCol和find类似,值是获取的是某个字段的值或者数组,示例可以参考find方法。
(4).delete($values, Array $cond = NULL)方法,删除数据
delete方法是用来删除数据。
下面是几个例子:
1.删除主键是10的记录
$table_model->delete(10)
2.删除主键是10,11,12的记录
$table_model->delete(array(10,11,12))
3.删除主键是10,11,12记录中gid是3的记录
$table_model->delete(array(10,11,12),array('gid'=>3))
(5).deleteIn($key, $values, Array $cond = NULL)方法,删除数据
下面是几个例子:
1.删除cat_id是3的记录
$table_model->deleteIn(‘cat_id’,3)
2.删除cat_id是3,4,5的记录
$table_model->deleteIn(‘cat_id’,array(3,4,5))
3.删除cat_id是3,4,5记录中id大于100的记录
$table_model->deleteIn(‘cat_id’,array(3,4,5),array('id >'=>100))
(6).check($source_data, &$ret_data, $rule = null, $map = null)方法,验证数据
参数说明:
$source_data 数据源,要检查的数据
$ret_data 数据验证通过$ret_data是验证规则处理后的数据,用于插入或者更新到数据库,数据验证失败$ret_data是空数组
$rule 验证规则,格式:array(
'字段名称'=>array(
'表单验证规则'=>'验证失败提示信息',
...
),
...
)
$map 字段映射信息数组。格式:array('表单name名称'=>'表字段名称',...)
返回null:验证通过。返回字符串:验证失败提示信息。
使用示例:
$user = table('admin');
$_POST['user'] = 'test';
//$_POST['user'] = 'testaa';
$_POST['pass'] = 'testtesttesttest';
$rule = array(
'username' => array($this->rule->range_len(5, 16) => '用户名5-16字符'),
'password' => array($this->rule->len(16) => '密码16字符'),
);
$map=array('user'=>'username','pass'=>'password');
$data = array();
if (is_null($msg = $table_model->check($_POST, $data, $rule,$map))) {
//dump($data);
dump($table_model->update($data,3));
} else {
echo $msg;
}
(7).insert($ret_data),插入数据。
$ret_data应该是check()验证通过的数据。
(8).update($ret_data, $where),需要更新的数据。
$ret_data 应该是check()验证通过的数据。
$where 可以是where条件关联数组,还可以是主键值。
(9).columns(),获取表字段数组。
(10).getPage($page, $pagesize, $url, $fields = '*', Array $where = null, Array $like = null, $orderby = null, $page_bar_order = array(1, 2, 3, 4, 5, 6), $page_bar_a_count = 10)
getPage用于获取分页数据,同时含有分页条。返回的是一个数组,items字段是结果集,page字段是分页条字符串。
参数说明:
$page 第几页
$pagesize 每页多少条
$url 基础url,里面的{page}会被替换为实际的页码
$fields select的字段,全部用*,多个字段用逗号分隔
$where where条件,关联数组
$like 搜素的字段,比如array('title'=>'java');搜索title包含java
$orderby 排序字段,比如: 'id desc'
$page_bar_order 分页条组成,可以参考手册分页条部分
$page_bar_a_count 分页条a的数量,可以参考手册分页条部分
下面是使用示例:
1.第一页,每页20条。
$table_model->getPage(1, 20, '?demo/&p={page}', '*', null, null, null, array(3, 5));
(11).search($page, $pagesize, $url, $fields, $cond, $page_bar_order = array(1, 2, 3, 4, 5, 6), $page_bar_a_count = 10)
getPage用于获取分页数据,同时含有分页条。返回的是一个数组,items字段是结果集,page字段是分页条字符串。
参数说明:
$page 第几页
$pagesize 每页多少条
$url 基础url,里面的{page}会被替换为实际的页码
$fields select的字段,全部用*,多个字段用逗号分隔
$cond SQL语句where后面的部分,不要带limit
$page_bar_order 分页条组成,可以参考手册分页条部分
$page_bar_a_count 分页条a的数量,可以参考手册分页条部分
下面是使用示例:
1.搜索id大于11而且type为3,按着id倒序排列。每页20条。
$query='id>11 and type=3 order by id desc';
$url='?demo.page&query=' . urlencode($query) . '&p={page}';
$table_model->search($this->input->get('p'), 20, $url , '*', $query));
10.获取GET,POST数据有4个模式:
1.get_xxx 从GET里面获取数据。
2.post_xxx 从POST里面获取数据。
3.get_post_xxx 先从GET里面获取,没有的话再到POST里获取。
4.post_get_xxx 先从POST里面获取,没有的话再到GET里获取。
$this->input增加了下面的方法,4个模式都有,下面只用get_xxx模式作为说明。
(1).$this->input->get_int($key, $min = null, $max = null, $default = null)
作用:获取一个整数。
参数说明:
$key 键
$min 最小值,为null不限制
$max 最大值,为null不限制
$default 默认值。格式错误或者不在范围,返回默认值
使用示例:
$this->input->get_int('id',1,null,1)
(2).$this->input->get_date($key, $min = null, $max = null, $default = null)
作用:获取日期,格式:2012-12-12
参数说明:
$key 键
$min 最小日期,格式:2012-12-12。为null不限制
$max 最大日期,格式:2012-12-12。为null不限制
$default 默认日期。格式错误或者不在范围,返回默认日期
使用示例:
$this->input->get_date('add_date',null,null,date('Y-m-d'))
(3).$this->input->get_time($key, $min = null, $max = null, $default = null)
作用:获取时间,格式:15:01:55
参数说明:
$key 键
$min 最小时间,格式:15:01:55。为null不限制
$max 最大时间,格式:15:01:55。为null不限制
$default 默认值。格式错误或者不在范围,返回默认值
使用示例:
$this->input->get_time('add_time',null,null,date('H:i:s'))
(4).$this->input->get_datetime($key, $min = null, $max = null, $default = null)
作用:获取日期时间,格式:2012-12-12 15:01:55
参数说明:
$key 键
$min 最小日期时间,格式:2012-12-12 15:01:55。为null不限制
$max 最大日期时间,格式:2012-12-12 15:01:55。为null不限制
$default 默认值。格式错误或者不在范围,返回默认值
使用示例:
$this->input->get_datetime('add_datetime',null,null,date('Y-m-d H:i:s'))
(5).$this->input->get_rule($rule, $key, $default = null)
作用:根据验证规则和键获取一个值
参数说明:
$rule 表单验证规则.示例:1.int 2. array('int','range[1,10]')
$key 键
$default 默认值。格式错误或者验证不通过,返回默认值。
使用示例:
$this->input->get_rule(WoniuRule::email(),'email')
升级提示:
1.在$system配置里面增加一项:
$system['url_rewrite'] = FALSE;如果开启了URL Rewrite 功能,请在这里设置为TRUE,没有开启请设置为FALSE。
该配置会影响url()函数生成的链接
2.在$system配置里面增加一项:
$system['table_cache_folder'] = $system['application_folder'] . '/cache';
table()方法缓存表字段信息的文件夹路径名称。
#############################ver 2.2.6[2014-04-24]#############################
增加了:
1.HMVC支持。
对应配置项:
/**
存放HMVC模块的文件夹路径名称
*/
$system['hmvc_folder'] = $system['application_folder'] . '/modules';
/**
注册HMVC模块,这里填写模块名称关联数组,键是url中的模块别名,值是模块文件夹名称
*/
$system['hmvc_modules'] = array('demo' => 'hmvc_demo');
MicroPHP HMVC模块结构说明:
每个模块文件夹里面必须有个名称为hmvc.php的模块配置文件。
模块文件夹结构可以参考示例模块:hmvc_demo,位于:application/modules/hmvc_demo
配置说明:
1.模块配置文件和入口文件里面的主配置一样。
2.如果HMVC模块有自己的配置,模块就可以覆盖主配置。
3.模块配置里面已经配置了一些必要的配置项目。
4.如果HMVC模块需要其它不同于主配置的配置,那么取消配置前面的注释,然后配置即可。
提醒:
1.$system['my_loader'],$system['hmvc_folder'],$system['hmvc_modules']这三个配置项在HMVC配置中无效。
2.HMVC模块共享主配置的:模型,视图,helper和类库。当有重名时,优先使用HMVC模块的。
如何访问hvmc模块?
访问hvmc模块很简单,只要在url控制器前面加上“模块名称/”即可,其它规则和以前框架规则一样。
比如:
1.http://127.0.0.1/?demo,访问的就是hmvc_demo模块默认的控制器和方法。
2.http://127.0.0.1/?demo/home.index,访问的就是hmvc_demo模块home控制器doIndex()方法。
2.插件模式下的hmvc。
a.WoniuLoader::instance($renew = null, $hmvc_module_floder = null)
b.WoniuController::instance($classname_path = null, $hmvc_module_floder = NULL)
c.WoniuModel::instance($classname_path = null, $hmvc_module_floder = NULL)
a,b,c都增加了第二个参数$hmvc_module_floder即模块文件夹名称。
比如:
1.$hmvc_demo_loader=WoniuLoader::instance(true,'hmvc_demo');实例化模块hmvc_demo的一个loader实例
2.$hmvc_demo_home=WoniuController::instance('home','hmvc_demo');实例化模块hmvc_demo的一个home控制器对象
3.$hmvc_demo_model=WoniuModel::instance('HmvcModel','hmvc_demo');实例化模块hmvc_demo的一个HmvcModel模型对象
3.$this->input增加了post_get($key = null, $default = null, $xss_clean = false) 方法,先尝试从$_POST获取一个变量,没有的话再在$_GET里获取。
4.系统配置$system['view_folder']支持数组。
5.$this->view_path($view_name, $path_key = 0),增加了第二个参数。当视图配置文件夹$system['view_folder']是数组的时候,
可以指定数组的键,用于指定使用哪个视图路经。该方法是获取视图绝对路径,在视图中include其它视图的时候用到。
提示:
hvmc模式时“视图路经数组”是模块的视图数组和主配置视图数组合并后的数组。
即:$hmvc_system['view_folder']=array_merge($hmvc_system['view_folder'], $system['view_folder']);
升级提示:
1.在$system配置里面增加两项:
$system['hmvc_folder'] = $system['application_folder'] . '/modules';
$system['hmvc_modules'] = array();
#############################ver 2.2.5[2014-04-19]#############################
增加了:
1.增加sessionStart()函数,安全启用session,避免重复启用session。
2.表单验证unique[table.field,id:1],其中的id:1支持变量。
比如:id:#user_id,
那么就会使用get或者post的user_id内容作为id内容。
3.表单验证增加了default[默认值]规则。
当没有post对应字段的值或者值为空的时候那么就会使用默认规则的值作为该字段的值。然后用这个值继续
后面的规则进行验证。
4.表单验证增加了optional可以为空规则;例如user字段规则中有optional,当没有传递字段user的值或者值是空的时候,
user验证会通过(忽略其它规则即使有required规则),
提示:
$this->checkData($rule, $_POST, $ret_data)返回的数据$ret_data,
如果传递了user字段$ret_data就有user字段,反之没有user字段.
如果user传递有值,那么就会用这个值继续后面的规则进行验证。
5.增加了$system['message_page_view'] = '';配置项,即$this->message()方法默认使用的视图,
该视图会在第4个参数为null时使用。视图里面可以使用的有三个变量:$msg提示内容,$url跳转的url,$time停留时间。
这里需要填写的是视图名称,不带视图后缀。没有就留空。
6.增加了function systemInfo($key = NULL)函数,获取系统配置信息,也就是WoniuLoader::$system里面的信息,
$key是WoniuLoader::$system的键。
7.增加了function dbInfo($group = NULL)函数,获取系统数据库配置信息。
$group是数据库组名称,即WoniuLoader::$system['db']的键。
$group为null时返回默认的配置组,即WoniuLoader::$system['db']['active_group']指定的组。
8.使用$this->model->$model_class_name时,当$model_class_name模型没有被加载的时候会自动尝试加载。
注意:此时$model_class_name一定要是模型名称类名称区分大小写,否则会提示找不到模型类文件。
优化了:
1.mysql_escape_string()在PHP5.3及以上版本中不再使用。
2.缓存文件夹的判断避免了只读环境报错。
3.错误控制逻辑。
4.$this->model($model_name,$alias_name),没有指定$alias_name的时候,通过$this->model->xxx访问模型类的,
xxx和$model_name中的模型类名称是一样的,“区分大小写”。
比如:
1.$this->model('admin/UserModel');加载模型目录中admin文件夹下面的UserModel模型,那么xxx就是UserModel
2.$this->model('AdminModel');加载模型目录中的AdminModel模型,那么xxx就是AdminModel
修复了:
1.$this->ajax_echoajax_echo($code, $tip = null, $data = null, $jsonp_callback = null, $is_exit = true)
当$tip或者$data为0的时候不显示0的bug;
2.$this->page()产生的分页条在某些情况下会js报错的bug
3.当设置了错误处理,@不能抑制错误的bug
升级提示:
1.为了方便,2.2.5之前版本的:$this->message($msg,$view = null, $url = null, $time = 3);
在2.2.5以及后续版本中,参数顺序调整为:$this->message($msg, $url = null, $time = 3, $view = null);
升级之前如果之前代码使用了$this->message()记得修改一下参数顺序。
2.在$system配置里面增加一项:$system['message_page_view'] = '';
3.为了更加规范,凡是使用了$this->model($model_name,$alias_name),没有传递$alias_name参数的代码,
当通过$this->model->xxx,引用模型的时候xxx必须和$model_name中的模型类名称是一样的。
2.2.5之前的版本xxx是模型类名称的全部小写。
#############################ver 2.2.4:[2014-03-17]#############################
修复了:
1.在$this->view()之前输出的内容会被清空的bug。
优化了:
1.分页条标签,便于css控制
增加了:
1.$this->page($total, $page, $pagesize, $url, $order = array(1, 2, 3, 4, 5, 6),$a_count=10)
增加了$a_count参数,用于控制分页条中a页码链接的总数量,不包含当前页的a标签,默认10个。当$order为null时$order使用默认array(1, 2, 3, 4, 5, 6);
示例:
$loader=WoniuLoader::instance();
echo $loader->page(100,$loader->input->get('p',1),2,'?p={page}',null,2);
#############################ver 2.2.3:[2014-01-01]#############################
增加了:
1.模型、类库、helper文件夹配置支持数组,一个项目可以同时拥有多个模型、类库、helper文件夹了。
这样“子项目”就能够“继承父项目的模型、类库、helper文件夹”同时拥有自己的模型、类库、helper文件夹。
2.WoniuLoader::instance(true),WoniuModel::instance(true),增加了true判断,
如果是ture就使用当前配置重新初始化一个对象,以前是只初始化一次其后一直使用第一次的对象实例。
3.增加了truepath函数取代系统函数realpath,当路径不存在的时候truepath也可以返回正确的绝对路径字符串。
4.增加了函数getInstance()获取当前控制器实例。
修复了:
1.MyLoader自定义类名称无效的问题。
2.realpath在windows上带来的一些问题。
3.$this->setCookie在ip或者非域名访问时设置的cookie无效的问题。
4.$this->model($model_name, $alias_name = null),当$alias_name有大写字母时,无法通过$this->model->$alias_name访问模型的问题。
#############################ver 2.2.2:[2013-12-15]#############################
增加了:
1.下列方法增加了xss过滤参数$xss_clean,当$xss_clean为true时,会对数据进行xss过滤。
$this->input->get_post($key=null,$default=null,$xss_clean=false);
$this->input->get($key=null,$default=null,$xss_clean=false);
$this->input->post($key=null,$default=null,$xss_clean=false);
$this->input->cookie($key=null,$default=null,$xss_clean=false);
2.增加了$system['my_loader']自定义Loader,方便用户在底层拓展框架核心。
详细说明如下:
/**
* 自定义Loader,用于拓展框架核心功能,
* Loader是控制器和模型都继承的一个类,大部分核心功能都在loader中完成。
* 这里是自定义Loader类文件的完整路径
* 自定义Loader文件名称和类名称必须是:
* 文件名称:类名.class.php
* 比如:MyLoader.class.php,文件里面的类名就是:MyLoader
* 注意:
* 1.自定义Loader必须继承WoniuLoader。
* 2.一个最简单的Loader示意:(假设文件名称是:MyLoader.class.php)
* class MyLoader extends WoniuLoader {
* public function __construct() {
* parent::__construct();
* }
* }
* 3.如果无需自定义Loader,留空即可。
*/
$system['my_loader']=$system['library_folder'].'/MyLoader.class.php';
3.灵活的表单验证,让表单验证不是像其它框架那样成为宣传的噱头实际上用起来十分不方便形如鸡肋,而是切实好用的、简化编码的。
优化了:
1.数据库驱动的custom_result_object方法,增加了set_XXX的支持,
使得$this->db->get('table')->result($Bean_Class_Name= 'object');
$this->db->get('table')->row($n = 0, $Bean_Class_Name = 'object');
支持Bean类$Bean_Class_Name中的set_XXX()属性。$Bean_Class_Name Bean类要提供字段的setter和getter,
格式是:set_字段名称($val),get_字段名称(),字段名称区分大小写。
一个标准的Bean类实例:
假设这个Bean类对应表user,user表有一个字段id。
class UserBean{
private $id;
public function get_id(){
reutrn $this->id;
}
public function set_id($val){
reutrn $this->id=$val;
}
}
修复了:
1.library文件夹不存在的时候报错的问题。
2.sqlite3驱动报Strict错Creating default object from empty value
line:832:$back = new stdClass();
升级提示:
1.在$system里面增加配置:$system['my_loader']='';即可。
#############################ver 2.2.1:[2013-11-25]#############################
增加了:
1.自动创建项目文件夹功能($system['folder_auto_init'] = TRUE;),可以手动开启或关闭。
2.是否自动建立项目文件夹。当开始一个新项目的时候,以前要一个个手动建立文件夹,
现在可以在配置里面设置$system['folder_auto_init']=TRUE;设置为TRUE 即可,系统就会自动建立文件夹。
在建立完文件夹后建议设置为FALSE,这样系统就不用每次都检测文件夹是否存在提高性能。
3.灵活的错误控制。
4.$this->database($config = NULL, $is_return = false, $force_new_conn = false)
默认情况下一个配置只有一个数据库驱动对象实例,第二次不再重新连接,使用已经存在的实例。
增加了$force_new_conn参数,该参数为true时每次都使用指定的数据库配置重新连接数据库,使用生成新的数据库实例。
修复了:
1.插件模式下自动加载helper会导致重复加载报错的问题。
2.pathinfo模式路由中有?,路由失效的问题。
比如:index.php/route.index/xxx/ddd/?flag=microphp
doIndex($p1=null,$p2=null){
$flag=$this->input->get('flag');
}
可以通过?flag=microphp的形式传递get变量。
自定义路由模式时注意,这时候“路由字符串”是route.index/xxx/ddd/&flag=microphp,即?会被&替换。
3.插件模式下WoniuLoader::instance(),自动加载无效的问题。
4.如果使用WoniuRouter::setConfig()使配置发生变化,WoniuLoader::instance(),WoniuModel::instance(),WoniuController::instance()
不会触发变化后配置中的自动加载的问题。
修改了:
1.$this->ajax_echo($code, $tip = '', $data = '',$is_exit = true)
修改为:
$this->ajax_echo($code, $tip = '', $data = '', $jsonp_callback=null,$is_exit = true)
以支持jsonp输出。
优化了:
1.WouniuInput->is_ajax(),修改为static;
升级提示:
1.在$system中增加如下配置:
/**
* 是否自动建立项目文件夹
* 当开始一个新项目的时候,可以在配置里面设置为TRUE ,系统就会自动建立文件夹。
* 在建立完文件夹后建议设置为FALSE,这样系统就不用每次都检测文件夹是否存在,提高性能。
*/
$system['folder_auto_init']=FALSE;
/**
* 是否接管误信息
* true:所有错误信息将由系统格式化输出
* false:所有错误信息将原样输出
*/
$system['error_manage'] = FALSE;
/**
* 是否开启错误日志记录
* true:开启,如果开启了,系统将接管错误信息输出,忽略system['error_manage'],
* 同时务必设置自己的错误日志记录处理方法
* false:关闭
*/
$system['log_error'] = FALSE;
/* * --------------------------------错误日志记录处理配置-----------------------
* 错误日志记录处理方法,可以是一个“函数名称”或是“类的静态方法”用数组方式array('class_name'=>'method_name')。
* 提示:
* 1.如果是类,把类按着类库的命名方式命名,然后放到类库目录即可;
* 2.如果是函数,把函数放到一个helper文件里面,然后在$system['helper_file_autoload']自动加载的helper文件里面填写上这个helper文件即可。
* 3.留空则不处理。
* 4.系统会传递给error、exception处理方法5个参数:($errno, $errstr, $errfile, $errline,$strace)
* 参数说明:
* $errno:错误级别,就是PHP里面的E_NOTICE之类的静态变量,错误级别和具体含义对应关系如下,键是代码,值是代码含义。
* array('0'=>'EXCEPTION',//异常信息
* '1' => 'ERROR',//致命的运行时错误。这类错误一般是不可恢复的情况,例如内存分配导致的问题。后果是导致脚本终止不再继续运行。
* '2' => 'WARNING', //运行时警告 (非致命错误)。仅给出提示信息,但是脚本不会终止运行。
* '4' => 'PARSE', //编译时语法解析错误。解析错误仅仅由分析器产生。
* '8' => 'NOTICE', //运行时通知。表示脚本遇到可能会表现为错误的情况,但是在可以正常运行的脚本里面也可能会有类似的通知。
* '16' => 'CORE_ERROR', //在PHP初始化启动过程中发生的致命错误。该错误类似 E_ERROR,但是是由PHP引擎核心产生的。
* '32' => 'CORE_WARNING',//PHP初始化启动过程中发生的警告 (非致命错误) 。类似 E_WARNING,但是是由PHP引擎核心产生的。
* '64' => 'COMPILE_ERROR', //致命编译时错误。类似E_ERROR, 但是是由Zend脚本引擎产生的。
* '128' => 'COMPILE_WARNING', //编译时警告 (非致命错误)。类似 E_WARNING,但是是由Zend脚本引擎产生的。
* '256' => 'USER_ERROR', //用户产生的错误信息。类似 E_ERROR, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
* '512' => 'USER_WARNING', //用户产生的警告信息。类似 E_WARNING, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
* '1024' => 'USER_NOTICE',//用户产生的通知信息。类似 E_NOTICE, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
* '2048' => 'STRICT', //启用 PHP 对代码的修改建议,以确保代码具有最佳的互操作性和向前兼容性。
* '4096' => 'RECOVERABLE_ERROR'//可被捕捉的致命错误。 它表示发生了一个可能非常危险的错误,但是还没有导致PHP引擎处于不稳定的状态。 如果该错误没有被用户自定义句柄捕获 (参见 set_error_handler()),将成为一个 E_ERROR 从而脚本会终止运行。
* '8192' => 'DEPRECATED', //(php5.3)运行时通知。启用后将会对在未来版本中可能无法正常工作的代码给出警告。
* '16384' => 'USER_DEPRECATED', //(php5.3)用户产少的警告信息。 类似 E_DEPRECATED, 但是是由用户自己在代码中使用PHP函数 trigger_error()来产生的。
* );
* 可以通过判断错误级别,然后有针对性的处理。一般我们需要处理的就是致命错误(0,1,4)和一般错误(2,8,2048,8192).
* $errstr:具体的错误信息
* $errfile:出错的文件完整路径
* $errline:出错的行号
* $strace: 调用堆栈信息
* 系统会传递给db_error处理方法2个参数:($errmsg,$strace)
* 参数说明:
* $errmsg:具体的数据库错误信息
* $strace:调用堆栈信息
* 一个错误处理类参考:
* http://git.oschina.net/snail/microphp/blob/development/tests/app/library/ErrorHandle.class.php
*/
$system['log_error_handle'] = array(
'error' => '', //array('ErrorHandle' => 'error_handle'),
'exception' => '', //array('ErrorHandle' => 'exception_handle'),
'db_error' => '', //array('ErrorHandle' => 'db_error_handle')
);
#############################ver 2.2.0#############################
增加了:
1.$this->cache为最新的phpfastcache2.1,缓存功能更加强大,而且编写自己的缓存类非常容易。
2.自定义缓存类说明:
$system['cache_drivers'] = array();
自定义缓存类文件的路径是$system['cache_drivers']的一个元素,可以有多个自定义缓存类。
缓存类文件名称命名规范是:
比如文件名是mycahe.php,那么文件mycahe.php里面的缓存类就是:class phpfastcache_mycahe{......}
mycahe.php的编写规范请参考:https://github.com/khoaofgod/phpfastcache/tree/Stable-Version-1.x/phpfastcache_v2.1_release/phpfastcache/drivers
3.phpfastcache增加Redis缓存支持
4.Redis存储SESSION支持。
5.Memcache存储SESSION支持。
6.Mongodb存储SESSION支持。
7.Mysql存储SESSION支持。
8.有时候类库文件很多,都放在一个类库文件夹里面会显得很乱,不好管理。
因此增加了自动加载的类库子文件夹支持:类库文件放在配置的类库文件夹的一级子文件夹里面。
删除了:
1.WoniuCache已经被移除,请使用$this->cache代替
优化了:
1.缓存文件夹的创建。
升级提示:
1.如果项目中使用了WoniuCache进行缓存,请使用$this->cache->代替WoniuCache::
2.在$system中增加如下配置:
/**
* ========================缓存配置========================
*/
$system['cache_drivers'] = array();
$system['cache_config'] = array(
/*
默认存储方式
可用的方式有:auto,apc,sqlite,files,memcached,redis,wincache,xcache,memcache
auto自动模式寻找的顺序是 : apc,sqlite,files,memcached,redis,wincache,xcache,memcache
*/
"storage" => "auto",
/*
默认缓存文件存储的路径
使用绝对全路径,比如: /home/username/cache
留空,系统自己选择
*/
"path" => "", // 缓存文件存储默认路径
"securityKey" => "", // 缓存安全key,建议留空,系统会自动处理 PATH/securityKey
/*
第二驱动
比如:当你现在在代码中使用的是memcached, apc等等,然后你的代码转移到了一个新的服务器而且不支持memcached 或 apc
这时候怎么办呢?设置第二驱动即可,当你设置的驱动不支持的时候,系统就使用第二驱动。
$key是你设置的驱动,当设置的“storage”=$key不可用时,就使用$key对应的$value驱动
*/
"fallback" => array(
"memcache" => "files",
"memcached" => "files",
"redis" => "files",
"wincache" => "files",
"xcache" => "files",
"apc" => "files",
"sqlite" => "files",
),
/*
.htaccess 保护
true会自动在缓存文件夹里面建立.htaccess文件防止web非法访问
*/
"htaccess" => false,
/*
Memcache服务器地址;
*/
"server" => array(
array("192.168.199.25", 11211, 1),
// array("new.host.ip",11211,1),
),
/*
Redis服务器地址;
*/
"redis" => array(
'type'=>'tcp',//sock,tcp;连接类型,tcp:使用host port连接,sock:本地sock文件连接
'prefix'=>@$_SERVER['HTTP_HOST'],//key的前缀,便于管理查看,在set和get的时候会自动加上和去除前缀,无前缀请保持null
'sock'=>'',//sock的完整路径
'host' => '192.168.199.25',
'port' => 6379,
'password' => NULL,//密码,如果没有,保持null
'timeout'=>0,//0意味着没有超时限制,单位秒
'retry'=>100,//连接失败后的重试时间间隔,单位毫秒
'db' => 0, // 数据库序号,默认0, 参考 http://redis.io/commands/select
),
);
/**
* =======================SESSION管理配置=======================
*/
$system['session_handle'] = array(
'handle' => '', //支持的管理类型:mongodb,mysql,memcache,redis。不使用留空即可。
'common' => array(
'autostart' => true,//是否自动session_start()
'cookie_path' => '/',
'cookie_domain' => '.' . @$_SERVER['HTTP_HOST'],
'session_name' => 'PHPSESSID',
'lifetime' => 3600, // session lifetime in seconds
),
'mongodb' => array(
'host' => '192.168.199.25',
'port' => 27017,
'user' => 'root',
'password' => 'local',
'database' => 'local', // name of MongoDB database
'collection' => 'session', // name of MongoDB collection
// persistent related vars
'persistent' => false, // persistent connection to DB?
'persistentId' => 'MongoSession', // name of persistent connection
// whether we're supporting replicaSet
'replicaSet' => false,
),
/**
mysql表结构
CREATE TABLE `session_handler_table` (
`id` varchar(255) NOT NULL,
`data` mediumtext NOT NULL,
`timestamp` int(255) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`,`timestamp`),
KEY `timestamp` (`timestamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
'mysql' => array(
'host' => '127.0.0.1',
'port' => 3306,
'user' => 'root',
'password' => 'admin',
'database' => 'test',
'table' => 'session_handler_table',
),
/**
memcache采用的是session.save_handler管理机制
需要php安装memcache拓展支持
*/
'memcache' => "tcp://192.168.199.25:11211",
/**
redis采用的是session.save_handler管理机制
需要php安装redis拓展支持,你可以在https://github.com/nicolasff/phpredis 找到该拓展。
*/
'redis' => "tcp://192.168.199.25:6379",
);
#############################ver 2.1.12#############################
增加了:
1.自定义路由模式。
比如:
(1).http://localhost/index.php?welcome.index
(2).http://localhost/index.php/welcome.index
路由字符串是welcome.index(不包含最前面的?或者/),路由规则都是针对“路由字符串”的。
现在定义路由规则:
$system['route']=array(
"/^welcome\\/?(.*)$/u"=>'welcome.ajax/$1'
);
路由规则说明:
1.路由规则是一个关联数组
2.数组的key是匹配“路由字符串”的正则表达式,其实就是preg_match的第一个参数。
3.数组的value是替换后的路由字符串
4.系统使用的url路由就是最后替换后的路由字符串
优化了:
1.$this->db->xxx_where_in($key,$array),自动检测$array是否是空数组,
当$array为空数组时,就认为$array=array('')即$key为''空值,不再报错。
升级提示:
1.如果想使用路由功能请在index.php的$system里面增加$system['route']=array();即可。
#############################ver 2.1.11#############################
修复了:
1.$this->config($group,$key),当$key是0时无效的问题。
增加了:
1.增加了$this->setConfig($key,$val)方法,设置配置,$key是helper文件里面的全局变量名称
优化了:
1.修改$this->helper()和$this->config()把配置变量放到$this->config避免与全局变量冲突
2.在支持代码提示的IDE中,例如Netbeans,增加了$this->db->...的数据库方法提示
升级提示:无
#############################ver 2.1.10#############################
修复了:
1.在PHP5.4及以上版本中的notice问题 Strict Standards: Declaration of xxx。
增加了:
1.命令行支持
2.mysqli驱动支持
升级提示:无
#############################ver 2.1.9beta2#############################
修复了:
1.$this->view()不传递数据时,$this->view_vars无效的问题。
增加了:无
升级提示:无
#############################ver 2.1.9beta#############################
修复了:
1.router的注入时机,使得在父类的构造方法之后即可使用路由信息。
增加了:
1.控制器中$this->view_vars['vars']='xxx';可以向$this->view_vars添加附加的视图数据,该数据会在显示视图的时候附加到视图数据里面。
升级提示:无
#############################ver 2.1.8#############################
修复了:找不到library class的提示信息。
增加了:$this->router;包含了所有的路由信息。
升级提示:无
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/it-lh/microphp.git
git@gitee.com:it-lh/microphp.git
it-lh
microphp
MicroPHP
master

搜索帮助

D67c1975 1850385 1daf7b77 1850385