1、直接實例化視圖類
1、視圖類: thinkphp/library/think/View.php;
2、命名空間: use think\View;
3、實例化: 動態 new View(); 靜態 View::instance();
4、常用方法: fetch()渲染模板, display()渲染內容, assign()模板賦值
在index/controller/index.php中:
-
-
namespace app\index\controller;
-
use think\View;
-
class Index
-
{
-
public function index()
-
{
-
//動態創建
-
//$view = new View();
-
//靜態創建
-
$view = View::instance();
-
//模板賦值
-
$view -> assign( 'domain','www.php.cn');
-
//渲染模板
-
return $view -> fetch();
-
}
-
}
-
在application\index\view\index\index.html中:
-
<p>網站域名:<span style="color:red">{$domain}</span></p>
-
<p>網站名稱:<span style="color:red">{$siteName}</span></p>
2、繼承控制器基類Controller
1、控制器類:thinkphp/library/think/Controller.php;
2、命名空間:use think\Controller;
3、實例化:$this->view;//可訪問View類所有屬性或方法
4、常用方法:$this->fetch()渲染模板,$this->display()渲染內容,$this->assign()模板賦值,$this->engine()模板引擎
在index.php中:
-
-
namespace app\index\controller;
-
use think\Controller;
-
class Index extends Controller
-
{
-
public function index()
-
{
-
//$this->view===>視圖對象
-
//$this->view->assign('siteName','php中文網');
-
//$this->view->assign('domain','www.php.cn');
-
$this->assign('siteName','php中文網'); //用這種就可以,省事
-
$this->assign('domain','www.php.cn'); //用這種就可以,省事
-
//渲染模板
-
//return $this->view->fetch();
-
return $this->fetch(); //這樣就行了
-
}
-
}
-
3、助手函數view()
1、不用繼承Controller基類,不用實例化View類,都可以使用;
2、僅適合於模板渲染,功能單一,不能加載配置;
3、語法:view([模板文件],[模板變量數組],[模板替換數組]);
4、使用方法實例:view('user',['name'=>'tp5'],['SITE'=>'php.cn']);
所以,index.php文件夾中就變為了:
-
-
namespace app\index\controller;
-
class Index
-
{
-
public function index()
-
{
-
-
return view('index',[
-
'domain'=>'php.cn',
-
'siteName'=>'php中文網'
-
]);
-
}
-
}
-
總結:在控制器使用視圖來調用模板,有三種方法:實例化視圖類的規范模式,基類繼承的經典模式,助手函數的快捷模式,新人推薦基類繼承方式,但長遠來看,實例化視圖類應該是發展趨勢,助手函數早晚會消失~~~