之前已经说过关于封装mvc框架的运行流程和对路由类的了解,接下来我们将进一步对mvc的类进行剖析完善。
首先我们来完成在控制器中对数据库进行连接;
一、模型类
首先我们在核心文件夹core下的lib文件夹下建立model.php 文件;
.在model.php里,首先需要一个命名空间,并让这个model类继承pdo,这样model也可以有直带的方法
接下来写一个初始化的方法;初始化的方法中连接我们的数据库‘
<?php
namespace core\lib;
class model extends \PDO
{
public function __construct()
{
//连接数据库
$dsn = "mysql:host=127.0.0.1;dbname=test";
$username = 'root';
$passwd='1111';
try
{
//连接测试
parent::__construct($dsn,$username,$passwd);
}
//连接失败 抛出异常
catch(\PDOException $e)
{
var_dump($e->getMessage());
}
}
}
然后我们可以在我们的控制器当中写一些sql语句,用来测试!!
<?php
namespace App\ctrl;
class indexCtrl extends \core\mpk
{
public function index()
{
// print_r("is indexCtrl");
// 模型
$model= new \core\lib\model();
$sql="select * from users";
$ret=$model ->query($sql);
print_r($ret->fetchAll());//打印数据
}
运行index控制器的index方法,打印出数据。这样我们就可以在控制器当中使用mysql了。
二、视图类
视图可以把变量赋值到视图层去,并且可以调用视图文件
<?php
namespace App\ctrl;
//控制器继承mpk的基类
class indexCtrl extends \core\mpk
{ //视图层
public function show(){
$data="你好";
$this->assign('data',$data);//把变量赋值到视图中
$this->display('index.php');//调用视图文件
}
}
?>
开始编码
因为控制器继承于mpk.php的基类,所有我们就在mpk.php增加我们的这两个方法
public function assign($name,$value)//接值
{
$this->assign[$name]=$value;//赋值
}
public function display($file)
{
// echo $file;die;
$file=MODULE.'/views/'.$file;
// 判断视图是否存在
if(is_file($file))
{
//如果文件存在则引入
extract($this->assign);
include $file;
}
}
然后我们需要建立我们存放视图的文件夹,与Ctrl控制器平级建立view文件夹,在view建立index.php,来输出我们在控制器定义的变量
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Document</title>
</head>
<body>
<h3>视图层</h3>
<?php echo $data;?>
</body>
</html>
接下来运行就可以看到视图层运行结果了!!!!
’