路由规则的匹配,直到找到匹配的控制器。
经过以上步骤还是无法找到匹配的控制器的话,则会跳转的404页面。
模型
模型简介
对于一个基于MVC模式的框架,模型类是必不可少的,YY框架的模型分为两种,简单模型(SampleModel)和数据库(Model)模型。
简单模型是对任何数据类型的一个统一封装。我们主张任何数据类型都被封装在模型之中,这样有利于数据的统一校验维护和管理。
数据库模型继承自简单模型,在简单模型的基础上实现了针对数据库表的实例化操作,让开发者对数据库的操作更加便捷。
对于复杂的模型操作,如实现类似Active Record的模型操作,开发这可以创建自己的模型类,继承简单模型(SampleModel)或数据库(Model)模型。 在原有模型基础上实现方法的重写和新增。
简单模型
使用入门
假设你要实现一个前台的form表单向后台提交数据,提交的数据你并不需要保存在数据库之中。这时候你就可以使用SampleModel了。 看下面的例子: 控制器mmsz.php:
???//简单模型记录前台密码
???$m = new SampleModel('password'); ???
???if($m->try_post()){//密码被传入 ???
???if($m->new != $m->again){
???Session::once('cperr','两次密码不一致!'); ???return; ???}
???$admin = new Model('admin');
???$admin->id = Session::get('uid'); ???$admin->password = $m->old;
???if(!$admin->is_real(array('id','password'))){ ???Session::once('cperr','原始密码不正确!'); ???return; ???}
???$admin->password = $m->new; ???if($admin->save()){
???Session::once('cpsuc','密码修改成功!'); ???$m = new SampleModel('password'); ???} ???}
视图内容mmsz.html:
???
???
??? ???
???密码修改 ???
???
???
??? ??? ???
??? ???
上例控制器中的前10行是简单模型的初始化和信息提交。验证成功才保存到数据库表admin中。
admin表的操作方法请参阅下一节的数据库模型 方法列表 __construct
???SampleModel::__construct(string $tablename, string $postid, boolean $isorgin) ???构造函数 ???
???Parameters:
???string $tablename 虚拟表名
???string $postid 表单提交的区分ID ???boolean $isorgin 是否是通用模型类
$postid用来区分相同表名的模型,区分$postid之后同一个页面就可以提交多个相同类型的模型了。 all
???SampleModel::all(string $names) ???所有有效的数据都输出hidden标签 ???这是一种页面参数整体传递的简便方式
???为了便于灵活覆盖,建议将其放在Form的最顶端(tk方法之后) ???把页面信息放在页面中是很不安全的,所以强烈建议只在新增时使用此方法 ???
???Parameters:
???string $names 字段名称数组 ???Returns:
???string 标签html字串 elid
???SampleModel::elid(string $name) ???获得页面标签的id ???Parameters: ???
???string $name 字段名称 标签name ???Returns:
???string 标签id elname
???SampleModel::elname(string $name) ???获得页面标签的name
???如果开启了表单令牌此处获得的name是经过框架加密的(防止恶意信息提交) ???
???Parameters: ???
???string $name 字段名称 标签name ???Returns:
???string 标签id field_form_name
???SampleModel::field_form_name(string $name) ???取得属性再Form中的name(未经加密的) ???
???Parameters:
???string $name 字段名称 标签name ???Returns: ???string load_from_get
???SampleModel::load_from_get() ???根据get请求内容填充这个Model
???这个方法通常用在信息检索页面的批量属性提交 ???切不可用此方法得来的数据进行CUD操作! ???
???Returns:
???Model 模型本身 load_from_post
???SampleModel::load_from_post() ???根据post请求内容填充这个Model ???这是表单字段自动提交的最常用方法 ???
???Returns:
???Model 模型本身 try_get
???SampleModel::try_get()
???试探行的填充这个model 如果能填充则采用post填充并返回:true否则返回:false ???
???Returns: ???boolean try_post
???SampleModel::try_post()
???试探行的填充这个model 如果能填充则采用post填充并返回:true否则返回:false ???
???Returns: ???boolean