之前已經說過關於封裝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>
接下來運行就可以看到視圖層運行結果了!!!!
’