摘要:原文是在我自己博客中,小伙伴也可以點閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽的背景音樂噢介紹一個簡單的框架,框架中實現(xiàn)了和層,層使用的組件,實現(xiàn)了一些簡單的設(shè)計模式,單一入口自動加載。
charm_PHP 介紹原文是在我自己博客中,小伙伴也可以點閱讀原文進(jìn)行跳轉(zhuǎn)查看,還有好聽的背景音樂噢~
一個簡單的MVC框架,框架中實現(xiàn)了C和V層,M層使用composer的PHP組件——Medoo,實現(xiàn)了一些簡單的設(shè)計模式,單一入口、自動加載。
本框架遵循PSR規(guī)范,使用命名空間來規(guī)范類于類之間的互相合作;
目錄app -> 應(yīng)用目錄 controller -> 控制器目錄 core -> 公共、核心文件目錄 views -> 視圖目錄 resource -> 資源目錄(js、images、css等) system config -> 框架配置文件目錄 core -> 框架核心文件目錄 Charm.php -> 核心文件 Common.php -> 公共方法 Cofig.php -> 配置類 Core.php -> 核心文件 Log.php -> 日志類 Model.php -> 數(shù)據(jù)庫類 Page.php -> 分頁類 Route.php -> 路由類 Security.php -> 驗證類 Session.php -> session類 dirves -> 驅(qū)動文件目錄 vendor -> PHP組件初始化
本地下載項目:git clone https://github.com/charm-v/ch...
打開cmd,在項目下輸入 compoer install
運行框架
全局方法 model()Use: $model =& model();
post($key)Use: $postData = post(); OR $name = post("name");
get($key)Use: $getData = get(); OR $name = get("name");
request($key, $type = "get")Use:
$getName = request("name", "get"); $posttName = request("name", "POST");` $requestName = request("name", "request");`ajaxReturn($status, $msg = "")
Use:
1、`ajaxReturn(200, "ok"); => {"status":200, "msg":"ok"}` 2、$returnData = [ "state" => 400, "message" => "error", "data" => [] ]; ajaxReturn($returnData); => {"state":400, "error":"ok","data":[]}view($viewName, $data = [])
Use:
view("home"); view("home", ["content" => "內(nèi)容"]);css($cssName, $cssPath = "css", $resource = "resource")
Use:
css("main.css"); ==> css("main.css", "css/home") ==>js($jsName, $jsPath = "css", $resource = "resource")
Use:
css("main.js"); ==> ......base_url($uri = "")
Use:
base_url(); ==> http://charm_PHP.com base_url("index/getUserList"); ==> http://charm_PHP.com/index/getUserListredirect($uri, $flag = false)
Use:
redirect("index/editUserInfo"); ==> Location: http://charm_PHP.com/index/editUserInfo redirect("baidu.com"); ==> Location: http://baidu.com redirect("https://google.com"); ==> Location: https://google.com類使用 Config類
use systemcoreConfig; // PAGENUM 配置項下標(biāo) page配置項文件名 Config::get("PAGE_NUM", "page");Log類
use systemcoreLog; // PAGENUM 配置項下標(biāo) page配置項文件名 Log::log($data, $fileName);Page類
use systemcoreConfig; use systemcorePage; if(isset($_GET["page"])) { $now_page = intval($_GET["page"]) ? intval($_GET["page"]) : 1; }else { $now_page = 1; } // 取得配置項每頁條數(shù) $pageNum = Config::get("PAGE_NUM", "page"); // 計算偏移量 $offset = $pageNum * ($now_page - 1); $data["count"] = parent::$model->count(table, $where); $where["LIMIT"] = [$offset, $pageNum]; $data["orderData"] = parent::$model->select("table", "*", $where); // 分頁處理 $objPage = new page($data["count"], $pageNum, $now_page, "?page={page}" . $parameter); $data["pageNum"] = $pageNum; // 生成分頁代碼 $data["pageList"] = $objPage->myde_write();依賴組件
Medoo
var-dumper
whoops
gitHub地址Charm_PHP
結(jié)語這個小框架,被我一直用作一些小型的外包項目中,暫時還沒有發(fā)現(xiàn)什么很嚴(yán)重的錯誤,估計是黑客好心,看到這個項目這么爛不忍心黑?嗯...有時間的話還是很想補充、完善一下這個框架的。
對了,這個小框架的原型是我在慕課網(wǎng)的一節(jié)課程中學(xué)習(xí)到的,自己敲出來后,然后就拿來自己用啦,注明一下課程的地址,想學(xué)習(xí)的小伙伴可以去學(xué)習(xí)一下:從零開始打造自己的PHP框架。,嗯,就先介紹到這里啦
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/26084.html
摘要:前言在說架構(gòu)之前,先說說框架吧。在架構(gòu)中就是這個轉(zhuǎn)接頭。當(dāng)一個新框架誕生后,關(guān)注點從學(xué)習(xí)這個框架,慢慢變成了這個框架是如何設(shè)計的,解決什么樣的問題。前幾年使用過各種框架,小到,大到。 前言 在說 MVC 架構(gòu)之前,先說說PHP框架吧。很多很多學(xué)完P(guān)HP語言的人,面對的就是PHP各種各樣的框架。什么TP啊、Yii啊、CI啊,還有很流行的laravel啊等等。 他們的大部分都會說自己是基于...
摘要:所以我查了很多的材料,希望能從自己的角度上用通俗的語言闡述前端框架的演變?,F(xiàn)在,前端頁面會有很多復(fù)雜的交互邏輯和用戶體驗,如果還使用之前老的框架,對層的操作就會難以維護(hù),這就是前端框架要不斷演變的主要原因。 說實在的,我不覺得MVC,MVVM這些框架有什么難的,直到我想寫一篇文章去系統(tǒng)的闡述它們。我遇到了以下幾個問題,1.不同的文章說的南轅北轍 2.沒有一個清晰的大綱和框架分類。所以我...
摘要:所以我查了很多的材料,希望能從自己的角度上用通俗的語言闡述前端框架的演變。現(xiàn)在,前端頁面會有很多復(fù)雜的交互邏輯和用戶體驗,如果還使用之前老的框架,對層的操作就會難以維護(hù),這就是前端框架要不斷演變的主要原因。 說實在的,我不覺得MVC,MVVM這些框架有什么難的,直到我想寫一篇文章去系統(tǒng)的闡述它們。我遇到了以下幾個問題,1.不同的文章說的南轅北轍 2.沒有一個清晰的大綱和框架分類。所以我...
閱讀 2881·2021-10-08 10:04
閱讀 3361·2021-09-10 11:20
閱讀 580·2019-08-30 10:54
閱讀 3409·2019-08-29 17:25
閱讀 2365·2019-08-29 16:24
閱讀 957·2019-08-29 12:26
閱讀 1526·2019-08-23 18:35
閱讀 2054·2019-08-23 17:53