构建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

相关文章
相关标签/搜索