MVC
Thinkphp框架完全贯穿了MVC思想 在上面BBS项目中我们只对一个表"think_bbs"进行了操作 并且都是在控制器中通过use think\Db
然后利用Db类对数据库进行了操作 准确的说上面的BBS项目只用到了VC 而不是MVC
更加准确的做法是 在application下新增一个bbs文件夹(模块) 并且文件下面有 controller view model三个文件夹分别代表控制器 模板 模型
thinkphp默认规定:
控制器都放在controoler这个控制器下面 namespace app\bbs(模块)\controller
并且继承控制器父类use think\Controller extends Controller
然后通过$this->fetch()调用模版
模版都放在 view 文件夹 控制器名文件夹 方法名.html
模版都放在modele文件夹下面 每一个文件代表一张表 文件中的类名与文件名和表名都应该相同
并且模版都应该放在同一个空间下面namespace app\模块名\model;
模版都要继承父类 use think\model; extends Model{}
namespace app\bbs\model;
use think\Model;
class Bbs extends Model{
}
?>
控制器中通过模型Model得到数据由以下几种方式 本质上都是获得Model这个类 然后调用静态方法::get();返回对象 然后调用toArray()方法 将对象转换成一定格式的数组
第一种 直接用类名调用get方法 简单暴力 $res = Bbs::get(1); $res =$res->toArray();
需要引用到对应类 use app/bbs/model/Bbs
第二种利用助手函数 什么都不用引用 利用$res = model("Bbs")
得到Model对象 然后再去get toArray
第三种方式是实例化 $res = new Bbs();
获得Model对象之后 去get toArray()
需要引用到对应类
第四种方式是引用 use think\Loader
然后利用Loader::model(model名)
获得Model对象 可以传入多个参数 获得一个对象集合 然后再去get toArray()
toArray();
var_dump($res);
echo "
";
#第二种方式不需要引入任何文件
#model()参数为model类名
$res = model("Data");
$res =$res::get(3);
//接结果转换成预定义好格式的数组
$res=$res->toArray();
//var_dump会转换格式 dump原格式输出
var_dump($res);
//array(3) { ["id"]=> int(3) ["name"]=> string(5) "condy" ["status"]=> int(1) }
#第三种方式 实例化
$res = new Bbs();
$res = $res::get(4);
$res=$res->toArray();
var_dump($res);
//rray(4) { ["id"]=> int(4) ["name"]=> string(1) "t" ["content"]=> string(11) "hello world" ["time"]=> string(1) "0" }
#第四种方式 需要引入loader 但是可以多模块查询
$res =Loader::model("Bbs");
$res =$res::get(10);
$res =$res->toArray();
var_dump($res);
//array(4) { ["id"]=> int(10) ["name"]=> string(1) "t" ["content"]=> string(11) "hello world" ["time"]=> string(1) "0" }
}
}