構建php frame

使用composer的自動加載、命名空間及shell腳本,構建原生php框架php

 

# smarty-frame
運用php構建本身的框架nginx

根目錄/application:應用程序核心目錄git

  根目錄/configs下:
    config:應用配置文件
    db:數據庫配置文件
    routes:路由配置文件
    fileCache:文件緩存配置
    redisCache:redis緩存配置github

  根目錄/src下:考慮未來框架可能還要支持php腳本的執行,因此要將base和web分開,未來要加php腳本時,只須要創建一個console的文件夾就行了。
    base:存放基礎的類
      base下:
        Application:框架底層基礎類
          一個抽象類,實現了一個簡單的run方法,run方法就是去執行如下handleRequest方法。
          定義了一個抽象方法handleRequest,等待被繼承,實現。
        Controller:包含控制器邏輯的基類
          不須要每寫一個要去渲染頁面的action,都要去找相應路徑的view,而後把它require進來。
          因此抽象出一個Controller的基類,實現一個渲染頁面的方法,讓其餘的controller繼承,就可使用相應的方法。
        Error:框架錯誤類
        Functions:框架公共函數類
        Route:路由控制實現類
        Component:基類,用於存放必須引入的可是有些類沒有的方法,防止調用出錯web

  cache:存放緩存相關類
    CacheInterface:緩存接口類,定義接口參數
    FileCache:文件緩存類
    主要思想就是,每個 key 都對應一個文件,緩存的內容序列化一下,存入到文件中,取出時再反序列化一下。剩下的基本都是相應的文件操做了。
    RedisCache:redis緩存類redis

  web:存放與web相關的類
    Application:與web相關的類
    全部程序都通過這裏
    Controller:包含控制器邏輯的基類
      不須要每寫一個要去渲染頁面的action,都要去找相應路徑的view,而後把它require進來。
      因此抽象出一個Controller的基類,實現一個渲染頁面的方法,讓其餘的controller繼承,就可使用相應的方法。shell

  view:存放視圖文件相關類
    Compiler:網上找的一個本身寫的模板轉換源碼
    Smarty:引入smarty進行模板編譯,並從新配置smarty
    (其實原理都同樣,就是將模板中特定字符串正則解析成php代碼,而後將轉換後的模板內容保存起來,供下次調用)數據庫

  db:數據庫交互Model類
    ModelInterface:數據模型接口類
    Model:數據模型基類,繼承此類可由Model層直接進行數據交互
    Connection:鏈接類,用於數據庫、緩存等建立鏈接實例
    DbClient:調用此類進行數據交互api

  Sf:幫助類,提供公共框架功能。緩存

根目錄/public:入口文件、靜態文件夾

根目錄/runtime:
  cache:緩存文件夾

根目錄/vendor:composer文件夾

 

路由規則(省略了模塊名,及 域名/api(沒有則默認爲web模塊)/方法名?參數):
  vbox-selfframe.cn/api/index
  vbox-selfframe.cn/index
  vbox-selfframe.cn/smarty-view
  vbox-selfframe.cn/backend/index

shell之建立文件夾

[root@vbox-nginx shell_command]# vi mkdir.sh #!/bin/sh parentDir="/media/sf_Project/self/smarty-frame/application/$1" fileName=$2 dirAndName=$parentDir/$fileName if [ ! -d "$dirAndName" ];then mkdir $dirAndName echo "建立文件夾成功"
else echo "文件夾已經存在" fi

調用shell建立文件夾:
[root@vbox-nginx shell_command]# ./mkdir.sh ApiLoveHouse Model //上級文件夾 要建立的文件夾名
建立文件夾成功


shell之建立php文件

[root@vbox-nginx shell_command]# vi mkfile.sh #!/bin/sh parentDir="/media/sf_Project/self/smarty-frame/application/$1" fileName=$2 dirAndName="$parentDir/$fileName.php"
string=${parentDir#*application} namespace=$(echo $string | sed 's#\/#\\#g') if [ ! -d "$parentDir" ];then echo "父級文件夾路徑錯誤"
else cd $parentDir if [ ! -f "$dirAndName" ];then touch $dirAndName echo "<?php" > $dirAndName if [[ $fileName == *$strCon* ]];then touch $dirAndName echo "<?php" > $dirAndName if [[ $fileName == *$strCon* ]];then echo "namespace App$namespace;" >> $dirAndName elif [[ $fileName == *$strMod* ]];then echo "namespace App\$namespace;" >> $dirAndName else echo "當前只能建立controller和model文件" fi echo "" >> $dirAndName echo "class $fileName{" >> $dirAndName echo " //" >> $dirAndName echo "}" >> $dirAndName echo "?>" >> $dirAndName echo "文件建立完成"
else echo "文件已經存在" fi fi fi

調用shell建立文件:
[root@vbox-nginx shell_command]# ./mkfile.sh ApiLoveHouse/Controllers WelcomeController //上級文件夾 要建立的文件名
文件建立完成

github地址:https://github.com/creationtime/smarty-frame

相關文章
相關標籤/搜索