国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

首頁 後端開發(fā) php教程 PHP MVC框架核心類

PHP MVC框架核心類

Nov 08, 2016 am 09:48 AM
框架

PHP MVC框架核心類別?
現(xiàn)在我們舉幾個(gè)核心框架的範(fàn)例示範(fàn):在framework/core下建立一個(gè)Framework.class.php的檔案。寫入以下程式碼:?

// framework/core/Framework.class.php?
class Framework {?
?? public static function run() {?
???示範(fàn)中建立了一個(gè)靜態(tài)方法run(),現(xiàn)在讓我們透過入口檔案index.php測(cè)試一下:?

require "framework/core/Framework.class.php";?
Framework::run(); 你可以在你的瀏覽器裡存取index.php看到結(jié)果。通常這個(gè)靜態(tài)方法被命名為run()或bootstrap()。在這個(gè)方法中,我們要做3件最主要的事:?

class Framework {?
?? public static function run() {?
//????????? self:: autoload();?
?????? self::dispatch();?
?? }?
?? private static function init() {?
.
?? private static function dispatch() {?
?? }?
}?
初始化?
init ()方法:?

// Initialization?

private static function init() {?

??? // Define path constants?ine("ROOT", getcwd() . DS) ;?

??? define("APP_PATH", ROOT . 'application' . DS);?

??? define("FRAMEWORK_PATH", ROOT . "defamework" ATHDS); . "public" . DS );?

??? define("CONFIG_PATH", APP_PATH . "config" . DS);?

??? define("CONTROLLER_PATH", APP_??? define("CONTROLLER_PATH", APP_PATHPATH .D.D; PATH", APP_PATH . "models" . DS);?

??? define("VIEW_PATH", APP_PATH . "views" . DS);?

??? define("CORE_PATH", AMEWOWO_PATH . FRAMEWORK_PATH . "database" . DS);?

??? define("LIB_PATH", FRAMEWORK_PATH . "libraries" . DS);?

??? define("HELPER_PATH", FR. "UPLOAD_PATH", PUBLIC_PATH . "uploads " . DS);?

??? // Define platform, controller, action, for example:?

??? // index.php?p=admin&c=Goods&a=地址]) ? $_REQUEST['p'] : 'home');?

??? define("CONTROLLER", isset($_REQUEST['c']) ? $_REQUEST['c'] : 'Index'); define("ACTION", isset($_REQUEST['a']) ? $_REQUEST['a'] : 'index');?

??? define("CURR_CONTROLLER_PATH", CONTROER_PATH .Pdefine CURR_VIEW_PATH", VIEW_PATH . PLATFORM . DS);?

??? // Load core classes?

??? require CORE_PATH . "Controller.class..

??? require DB_PATH . "Mysql .class.php";?

??? require CORE_PATH . "Model.class.php";?


??? // Load configuration file?
?Start session
??? session_start();?
}?
在註釋中你可以看到每一步的目的。?

自動(dòng)載入?
在專案中,我們不想在腳本中想使用一個(gè)類別的時(shí)候手動(dòng)的去include或require加載,這就是為什麼PHP MVC框架都有自動(dòng)載入的功能。例如,在symfony中,如果你想要載入lib下的類,它將會(huì)被自動(dòng)引入。很神奇是吧?現(xiàn)在讓我們?cè)谧约旱目蚣苤屑尤胱詣?dòng)載入的功能。

這裡我們要使用的PHP中的自帶函數(shù)spl_autoload_register:?

// Autoloading?

private static function autoload(){?????);

// Define a custom load method?
private static function load($classname){?

// Here simply autoload app's controller and model classes?

??? if (substr($classname, -10) == "Controller"){?

???CONTROLLER_PATH . "$classname.class.php";?

} elseif (substr($classname, -5) == "Model"){?

??????? // Model?

???????
每一個(gè)框架都有自己的命名規(guī)則,我們的也不例外。對(duì)於一個(gè)控制器類,它需要被命名成類似xxxController.class.php,對(duì)於一個(gè)模型類,需要被命名成xxModel.class.php。為什麼在使用一個(gè)框架的時(shí)候你需要遵守它的命名規(guī)則呢?自動(dòng)加載就是一條原因。

路由/分發(fā)?
// Routing and dispatching?

private static function dispatch(){?

??? // Instantiate the controller class and call its
??? // Instantiate the controller class and call its
我;?

??? $action_name = ACTION . "Action";?

??? $controller = new $controller_name;?

??? $controller->$action_name();?

}方法中。?

基礎(chǔ)Controller類別?
通常在框架的核心類別中都有一個(gè)基礎(chǔ)的控制器。在symfony中,被稱為sfAction;在iOS中,被稱為UIViewController。這裡我們命名為Controller,在framework/core下建立Controller.class.php?
// Base Controller?
class Controller{?
??? // Base Controller has a property called $
??? // Base Controller has a property called $loader, instance class class class (introduced later)?
??? protected $loader;???? public function __construct(){?
??????? $this?$message,$wait = 0){?
??????? if ( $wait == 0){?
??????????? header("Location:$url");?
??????? } ";?
??????? }?
??????? exit;?
??? }?
}?
基礎(chǔ)控制器$loader ,它是Loader類別的實(shí)例化(後面介紹)。準(zhǔn)確的說,$this->loader是一個(gè)變數(shù)指向了被實(shí)例化的Load類別。這裡我不過多的討論,但這的確是一個(gè)非常關(guān)鍵的概念。我遇過一些PHP開發(fā)者相信在這個(gè)語句之後:?
$this->loader = new Loader();?
$this->load是一個(gè)物件。不,它只是一個(gè)引用。這是從Java開始使用的,在Java之前,在C++和Objective C中稱為指標(biāo)。引用是個(gè)封裝的指標(biāo)型別。例如,在iOS(O-C)中,我們創(chuàng)建了一個(gè)物件:?
UIButton *btn = [UIButton alloc] init];?
載入類別?
在framework.class.php中,我們已經(jīng)封裝了應(yīng)用程式的控制器和模型的自動(dòng)加載。但是如何自動(dòng)載入在framework目錄中的類別呢?現(xiàn)在我們可以新建一個(gè)Loader類,它會(huì)載入framework目錄中的類別和函數(shù)。當(dāng)我們載入framework類別時(shí),只需要呼叫這個(gè)Loader類別中的方法。
class Loader{?
??? // Load library classes?
??? public function library($lib){?
??????loader helper functions. Naming conversion is xxx_helper.php;?
??? public function helper($helper){?
??????? include HELPER_PATH . "{$helper}_helper.php";?
??? }?
}

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

如何評(píng)估Java框架商業(yè)支援的性價(jià)比 如何評(píng)估Java框架商業(yè)支援的性價(jià)比 Jun 05, 2024 pm 05:25 PM

評(píng)估Java框架商業(yè)支援的性價(jià)比涉及以下步驟:確定所需的保障等級(jí)和服務(wù)等級(jí)協(xié)定(SLA)保證。研究支持團(tuán)隊(duì)的經(jīng)驗(yàn)和專業(yè)知識(shí)??紤]附加服務(wù),如昇級(jí)、故障排除和效能最佳化。權(quán)衡商業(yè)支援成本與風(fēng)險(xiǎn)緩解和提高效率。

PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? PHP 框架的學(xué)習(xí)曲線與其他語言框架相比如何? Jun 06, 2024 pm 12:41 PM

PHP框架的學(xué)習(xí)曲線取決於語言熟練度、框架複雜性、文件品質(zhì)和社群支援。與Python框架相比,PHP框架的學(xué)習(xí)曲線較高,而與Ruby框架相比,則較低。與Java框架相比,PHP框架的學(xué)習(xí)曲線中等,但入門時(shí)間較短。

Java框架的效能比較 Java框架的效能比較 Jun 04, 2024 pm 03:56 PM

根據(jù)基準(zhǔn)測(cè)試,對(duì)於小型、高效能應(yīng)用程序,Quarkus(快速啟動(dòng)、低記憶體)或Micronaut(TechEmpower優(yōu)異)是理想選擇。 SpringBoot適用於大型、全端應(yīng)用程序,但啟動(dòng)時(shí)間和記憶體佔(zhàn)用稍慢。

PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程式效能? PHP 框架的輕量級(jí)選項(xiàng)如何影響應(yīng)用程式效能? Jun 06, 2024 am 10:53 AM

輕量級(jí)PHP框架透過小體積和低資源消耗提升應(yīng)用程式效能。其特點(diǎn)包括:體積小,啟動(dòng)快,記憶體佔(zhàn)用低提升響應(yīng)速度和吞吐量,降低資源消耗實(shí)戰(zhàn)案例:SlimFramework創(chuàng)建RESTAPI,僅500KB,高響應(yīng)性、高吞吐量

golang框架文件最佳實(shí)踐 golang框架文件最佳實(shí)踐 Jun 04, 2024 pm 05:00 PM

編寫清晰全面的文件對(duì)於Golang框架至關(guān)重要。最佳實(shí)踐包括:遵循既定文件風(fēng)格,例如Google的Go程式設(shè)計(jì)風(fēng)格指南。使用清晰的組織結(jié)構(gòu),包括標(biāo)題、子標(biāo)題和列表,並提供導(dǎo)覽。提供全面且準(zhǔn)確的信息,包括入門指南、API參考和概念。使用程式碼範(fàn)例說明概念和使用方法。保持文件更新,追蹤變更並記錄新功能。提供支援和社群資源,例如GitHub問題和論壇。建立實(shí)際案例,如API文件。

如何為不同的應(yīng)用場(chǎng)景選擇最佳的golang框架 如何為不同的應(yīng)用場(chǎng)景選擇最佳的golang框架 Jun 05, 2024 pm 04:05 PM

根據(jù)應(yīng)用場(chǎng)景選擇最佳Go框架:考慮應(yīng)用類型、語言特性、效能需求、生態(tài)系統(tǒng)。常見Go框架:Gin(Web應(yīng)用)、Echo(Web服務(wù))、Fiber(高吞吐量)、gorm(ORM)、fasthttp(速度)。實(shí)戰(zhàn)案例:建構(gòu)RESTAPI(Fiber),與資料庫互動(dòng)(gorm)。選擇框架:效能關(guān)鍵選fasthttp,靈活Web應(yīng)用選Gin/Echo,資料庫互動(dòng)選gorm。

Java框架學(xué)習(xí)路線圖:不同領(lǐng)域中的最佳實(shí)踐 Java框架學(xué)習(xí)路線圖:不同領(lǐng)域中的最佳實(shí)踐 Jun 05, 2024 pm 08:53 PM

針對(duì)不同領(lǐng)域的Java框架學(xué)習(xí)路線圖:Web開發(fā):SpringBoot和PlayFramework。持久層:Hibernate和JPA。服務(wù)端響應(yīng)式程式設(shè)計(jì):ReactorCore和SpringWebFlux。即時(shí)計(jì)算:ApacheStorm和ApacheSpark。雲(yún)端運(yùn)算:AWSSDKforJava和GoogleCloudJava。

Golang框架學(xué)習(xí)過程中常見的迷思有哪些? Golang框架學(xué)習(xí)過程中常見的迷思有哪些? Jun 05, 2024 pm 09:59 PM

Go框架學(xué)習(xí)的迷思有以下5種:過度依賴框架,限制彈性。不遵循框架約定,程式碼難以維護(hù)。使用過時(shí)庫,帶來安全和相容性問題。過度使用包,混淆程式碼結(jié)構(gòu)。忽視錯(cuò)誤處理,導(dǎo)致意外行為和崩潰。

See all articles