ThinkPHP中新增公共類

somehow1002發表於2017-07-03

新增公共類

有時,需要在thinkphp中的一些類之中進行一些公共的操作,如檢查使用者是否登入、session是否過期等,這些可以通過在thinkphp中新增公共類來實現。

舉一個後臺新增使用者驗證的例子來說。

前提:後臺的每一個頁面都要檢測該是否是允許登入的使用者,檢測函式為checkAdmin()。

1.在應用的Common目錄下建一個Controller目錄,在Controller目錄裡新增一個類AdminController.class.php。內容如下:

<?php
namespace Common\Controller;
use Think\Controller;
class AdminController extends Controller{
	function _initialize(){
		if(!checkAdmin()){
			$this->error("permission denied!");
			exit(0);
		}
	}
}
2.後臺操作的每一個類,都繼承自該類,如後臺的IndexController.class.php頁面:

<?php
namespace Admin\Controller;
use Common\Controller\AdminController;
class IndexController extends AdminController {
	//do something...
}
這樣後臺每個頁面的類呼叫時,都會進行使用者驗證。

_initialize()和__construct()的區別

_initialize()是thinkphp特有的方法,__construct()是php中的方法,二者都是用來在類初始化的時候呼叫的。

_initialize()的作用體現在繼承中,呼叫_initialize()的時候,會先執行父類的構造方法,然後再執行自己的構造方法。相當於

class XXX extends YYY{
	function __construct(){
		parent::__construct();
		//XXX's initialize...
	}
}
而普通的__construct()只會呼叫自己的構造方法。

以上為個人觀點,如有錯誤,歡迎指正。

原文地址:http://blog.csdn.net/somehow1002/article/details/74276206




相關文章