從零開始打造自己的php框架

2021-10-13 15:27:18 字數 4184 閱讀 6043

為了更快的開發效率

為了更高的執行效率

為了更好地證明自己(裝x)

能夠熟練地使用使用php

較為深刻的理解物件導向和mvc概念

較強的邏輯能力和動手能力

目的: 通過位址列的引數來找到對應的控制器和方法

本質

隱藏index.php

獲取url 引數部分

返回對應的控制器和方法

url多餘部分轉換成 get ;例如 /id/1/str/2/test/3

<?php

namespace

core\lib

;use

core\lib\conf

;class

route

unset

($patharr[0

]);if

(isset

($patharr[1

]))else

//url多餘部分轉換成 get

$_get=[

];$count

=count

($patharr)+

2;$i=

2;while($i

<

$count)$i

=$i+2

;}}else

}}

目的:mvc結構的v,解耦,實現業務邏輯

本質

通過路由類獲取控制器和方法名

如果存在檔案 則 例項化對應類和使用對應方法,反之

<?php

namespace

;use

core\lib\conf

;class

indexctrl

extends

\core\imooc

}

目的:在控制器當中連線我們的資料庫【優雅】,

本質:提供 pdo 所需引數

<?php

namespace

core\lib

;class

model

extends

\pdo

catch

(\pdoexception$e)

}}

目的:實現mvc結構裡的的c,前端檔案與php**邏輯分離

本質

變數賦值到模板上 (本質是 extract【打散陣列】 使用陣列的鍵值 作為變數名,對應的值作為

可呼叫指定的模板 (本質是引入 include檔案)

public

function

assgin

($name

,$value=''

)}else

}public

function

dispaly

($file

)}

public

function

index()

目的
<?php

namespace

core\lib

;class

conf

else

else

}else}}

/** * @param 獲取某個配置檔案所有的值

* @param $file

* @return mixed

* @throws \exception

*/static

public

function

all(

$file

)else

else}}

}

目的
:儲存報錯等日誌,利於追蹤痕跡

本質

確定日誌儲存方式

日誌單位為乙個小時

在系統敏感位置新增日誌

小知識:常量 php_eol 自動適配所有系統的換行符

<?php

namespace

core\lib

;use

core\lib\conf

;class

logstatic

public

function

log(

$name

,$file

='log'

)}

目的:通過composer載入前輩們已經寫好的功能

本質:引進第三方類

composer.json

}//使用

include

"vendor/autoload.php"

;

目的:composer載入乙個輕量級的資料庫框架 medoo,來提高我們在針對資料庫操作的時候的一些開發效率

本質: 模仿tp框架,封裝資料庫操作,方便使用

//引進medoo

<?php

namespace

core\lib

;use

core\lib\conf

;class

model

extends

\medoo\medoo

}//模型類

<?php

namespace

;use

core\lib\model

;class

cjknamemodel

extends

model

public

function

getone

($id

)public

function

addone

($data

)public

function

setone

($where

,$data

)public

function

del(

$where)}

//控制器呼叫

<?php

namespace

;use

core\lib\conf

;use

core\lib\model

;class

indexctrl

extends

\core\imooc

}

目的:composer載入乙個強大的模板引擎 twig,來提高頁面渲染開發效率

本質: 使用twig封裝好的方法,整合模板,傳遞變數到模板等

//引進 twig

public

function

dispaly

($file)}

//模板使用 twig,layout.html

<

!doctype html>

"en"

>

"utf-8"

>

title<

/title>

<

/head>

header<

/header>

<

/content>

footer<

/footer>

<

/body>

<

/html>

//繼承layout.html index.html

}

從零開始打造自己的PHP框架 第5章

使用medoo外掛程式來連線和運算元據庫。1 在composer中新增依賴 catfan medoo 2 更新依賴 composer update 1 config目錄新增medoo config.php為 return array database type mysql database name...

從零開始打造自己的框架 類的自動載入

接下來我們希望完成乙個 自動載入類 的動能,我們把這個功能放到imooc這個基礎類當中。core imooc.php namespace core class imooc 自動載入的功能 static public function load class elseelse 上面 中,load 方法的...

php從零開始

吐槽 今天開始擼php了,從此前端少了個小白,php多了個小白。本白從3年前陸陸續續開始一會兒擼會兒php一會兒擼前端。前端擼的比較多,php擼的比較少,當然本白擼php大多都是被逼的 然後反正不準備換工作了,那麼工作閒的蛋疼,那麼開始重新系統的開始學一下php。然後麼,我和我的女友分分合合的樣子。...