<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Simple PHP

          聯(lián)合創(chuàng)作 · 2023-09-20 12:08

              Simple 一個(gè)結(jié)構(gòu)清晰、層次分明、微型的php框架。

              Simple 不是一個(gè)試圖滿足所有需求的怪物。

              Simple 試圖解放你的思想,不被框架的條條框框所限制。

              Simple 試圖成為一個(gè)能讓你自由發(fā)揮的框架。

              Simple 試圖規(guī)范流程,而不是提供一個(gè)非常具體的實(shí)現(xiàn)。

          需求

          1.             >php5.3.0。

          2.             熟悉php,熟悉面向?qū)ο缶幊獭?/p>

          3.             愛(ài)翻php手冊(cè)。

          4.             推薦IDE,phpstorm

          核心思想

          1. 控制請(qǐng)求到響應(yīng)的整個(gè)生命周期,并且對(duì)此按照合適的粒度進(jìn)行分層,而不是著眼于提供龐大的功能。

              這部分的分層在項(xiàng)目的Cycle包下面,主要包含有

          •             Application

          •             Router

          •             Request

          •             Caller

          •             Response

              執(zhí)行的流程是從上到下,具體的流程為:

          1.             所有的請(qǐng)求都會(huì)進(jìn)入Application的run方法,整個(gè)請(qǐng)求到相應(yīng)返回的生命周期都是在這個(gè)方法中進(jìn)行的。

          2.             在Application的run方法中會(huì)生成Router對(duì)象。

          3.             根據(jù)Router對(duì)象,會(huì)生成Request對(duì)象,所有的請(qǐng)求參數(shù)都會(huì)包裝在Request里面。

          4.             把生成的Request對(duì)象傳遞給Caller對(duì)象,負(fù)責(zé)調(diào)用具體的接口(這里既可以是Controller,也可以實(shí)現(xiàn)為RPC)。

          5.             然后接口生成Response對(duì)象。

          6.             最后根據(jù)項(xiàng)目的需要,把Response對(duì)象轉(zhuǎn)換為你所需要的格式,返回給客戶端。

          2. 提供方便的數(shù)據(jù)操作模式(注:不提供復(fù)雜的ORM)。

              數(shù)據(jù)相關(guān)的操作都封裝在了Model包下面,主要分為這個(gè)幾個(gè)層次:

          1.             Vo,實(shí)體類(lèi)。

          2.             Dao,數(shù)據(jù)訪問(wèn)。

          3.             Driver,數(shù)據(jù)連接驅(qū)動(dòng)。

          4.             Pool,連接池。

          Vo

              實(shí)體類(lèi),全稱為Value Object。顧名思義,就是對(duì)數(shù)據(jù)庫(kù)字段的一個(gè)映射。底層提供了兩種類(lèi)型的Vo,NoSQLVo和MySQLVo 項(xiàng)目中的實(shí)體類(lèi)定義字段的時(shí)候必須定義為 proteced $_變量名稱的格式,并且最好實(shí)現(xiàn)各個(gè)字段的getter和setter方法,這部分代碼完全可以由IDE生成(注:推薦phpstorm)。

          Dao

              數(shù)據(jù)訪問(wèn)層,所有的數(shù)據(jù)訪問(wèn)都應(yīng)該通過(guò)該層來(lái)訪問(wèn),底層提供了兩種類(lèi)型的Dao,并且提供了一些針對(duì)單條信息的基礎(chǔ)的操作方法。 如果底層的Dao層的功能不能滿足你的要求,你自己自行擴(kuò)展繼承。

          Driver

              數(shù)據(jù)庫(kù)驅(qū)動(dòng)層,目前關(guān)系型數(shù)據(jù)庫(kù)只支持PDO的方式,NoSQL類(lèi)型的數(shù)據(jù)庫(kù)只支持Memached。

          Pool

              連接池(針對(duì)一個(gè)請(qǐng)求到相應(yīng)生命周期而言),根據(jù)配置里面的標(biāo)識(shí)獲取數(shù)據(jù)庫(kù)的連接,同一個(gè)標(biāo)識(shí)多次獲取,只會(huì)連接一次數(shù)據(jù)庫(kù)。

          3. 日志功能

              系統(tǒng)底層采用的是開(kāi)源的monolog,系統(tǒng)包裝了一個(gè)簡(jiǎn)單通用的方法來(lái)寫(xiě)入日志,封裝在Log包下面,有一個(gè)叫LogUtil的工具類(lèi),有一個(gè)方法叫write。

          4. debug功能

              在php中,常用的debug方式有:

          1.             打印輸出,例如 echo,print_r,var_dump之類(lèi)的打印函數(shù)。

          2.             文件記錄,把調(diào)試信息寫(xiě)入到一個(gè)文本里面。

              這兩種方式的缺點(diǎn)也,調(diào)試起來(lái)麻煩,調(diào)試完成后容易忘記去掉,由于采用的是系統(tǒng)函數(shù),無(wú)法在非debug狀態(tài)下關(guān)掉。 比較好的方式是,系統(tǒng)自定義一個(gè)調(diào)試方法,可以在非debug的情況下關(guān)掉。在Debug類(lèi)下面封裝了一個(gè)trace方法。專(zhuān)門(mén)用來(lái)調(diào)試,輸出會(huì)默認(rèn)輸出到,Google Chrome的console面板下面,前提是你得安裝一個(gè)叫做Chrome Logger的插件。

          5. Config,配置

          只支持php數(shù)組形式的配置。 為什么不支持yaml和json或者其他格式的配置? 無(wú)論你采用什么格式的配置文件,最終都必須解析轉(zhuǎn)換為php的數(shù)組或者對(duì)象,而且由于每次常規(guī)的操作都會(huì)用到配置文件,都會(huì)去解析一次,這個(gè)太沒(méi)必要了。 項(xiàng)目的配置相關(guān)都放在了Config目錄下面,系統(tǒng)提供了一個(gè)ConfigManager::get的方法去獲取對(duì)應(yīng)的配置信息。 系統(tǒng)默認(rèn)會(huì)現(xiàn)在項(xiàng)目配置中去找,若找到就直接返回,找不到,就到系統(tǒng)默認(rèn)的配置中去查找,找到返回,如果找不到會(huì)拋出一個(gè)異常。

          6. Bootstrap,系統(tǒng)引導(dǎo)

              引導(dǎo)整個(gè)應(yīng)用,提供服務(wù)。 主要有兩個(gè)步驟

          1.             初始化環(huán)境,使用init方法,這里面注冊(cè)了對(duì)警告的捕捉未被捕捉異常的處理,自動(dòng)加載文件。

          2.             start,啟動(dòng)服務(wù),注冊(cè)Application對(duì)象。

          7.Application包

              由于框架本身只是提供一個(gè)規(guī)范和標(biāo)準(zhǔn),沒(méi)有提供具體的實(shí)現(xiàn)。所以Application包下面提供了兩種不同類(lèi)型應(yīng)用的實(shí)現(xiàn)。

          1.             Game,適合于SNS游戲類(lèi)型的應(yīng)用。所有面向服務(wù)不需要輸出html的應(yīng)用都適用。

          2.             Web,Web網(wǎng)站類(lèi)型應(yīng)用。系統(tǒng)采用的模板引擎是twig

          瀏覽 25
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩伦人妻无码 | 亚洲高清无码毛片 | 中文字幕成人电影 | 时逼高清视频免费少妞 | 秋霞欧美性爱 |