Skip to content
This repository has been archived by the owner on Jun 26, 2023. It is now read-only.

Euraxluo/verb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VERB

It's a pity to abandon the tasteless food

After a semester of studying php, write a small framework

遵守PSR-4PSR-2规范 写此框架时还没有学习设计模式,因此没有什么设计思想

文件结构 (directory structure)

.
├── app                                         [用户主目录]
│   └── TestCtrls
│       └── test.php                            [测试demo]
├── library                                     [框架主目录]
│   ├── base.php                                [初始化文件]
│   ├── conf.json                               [框架配置文件]
│   ├── conf.php                                [框架配置文件]
│   ├── Doctrine                                [注解解析第三方包]
│   └── verb                                    [verb框架目录]
│       ├── Mould.php                           [模板引擎类]
│       ├── Guider.php                          [引导注册类]
│       ├── Loader.php                          [自动加载类]
│       ├── Conf.php                            [配置解析类]
│       ├── Route.php                           [路由接口]
│       ├── AutoGenerationClass.php             [根据数据库自动生成实体类]
│       ├── model
│       │   ├── driver
│       │   │   ├── MedooModel.php              [Medoo第三方句柄]
│       │   │   └── PdoModel.php                [返回PDO驱动句柄]
│       │   └── ModelDriver.php                 [数据库连接驱动]
│       ├── cache
│       │   ├── CacheDriver.php                 [缓存驱动]
│       │   └── driver
│       │       ├── ApcuCache.php               [APC驱动]
│       │       ├── FileCache.php               [文件缓存驱动]
│       │       └── RedisCache.php              [Redis缓存驱动]
│       ├── medoo
│       │   ├── Medoo.php
│       │   └── README.md
│       ├── route
│       │   ├── InitRoute.php                   [初始化路由]
│       │   └── Tree.php                        [路由(字典)树]
│       ├── exception                           [异常类]
│       │   ├── BadRequest.php
│       │   ├── BadStrType.php
│       │   ├── ClassNotFoundException.php
│       │   ├── Forbidden.php
│       │   └── NotFound.php
│       └── util
│           ├── AnnotationCleaner.php           [注解清理类]
│           ├── AnnotationReader.php            [注解读取类]
│           ├── DocParser.php                   [第三方注解解析类]
│           ├── Enum.php                        [自己写的枚举类]
│           ├── function.php                    [常用全局方法]
│           ├── Logger.php                      [日志处理类]
│           └── MetaInfo.php                    [注解解析类]
├── composer.json                               [composer配置文件]
├── index.php                                   [入口文件]
├── LICENSE.txt                                 [开源协议]
├── README.md                                   [README]
└── verb.ico

USE

你如果想使用medoo,Twig以及其他,你应该先composer installcomposer update

  1. 找到框架配置文件,选择json或者php文件写入你的配置
  2. 找到入口文件,更改define('APP', __DIR__ .DIRECTORY_SEPARATOR.'app');定义app目录
  3. 找到初始化文件,更改define('CONF',__DIR__.DIRECTORY_SEPARATOR.'conf.php');定义全局配置文件
  4. 找到初始化文件,更改Logger::register('debug','file');设置日志级别和输出形式
  5. 找到初始化文件,更改Loader::register();注册自动类加载,传入true,开启错误的debug模式
  6. 找到初始化文件,查看确认,更改所有的register()函数
  7. 找到引导注册类,查看并确认31-45行代码(和json格式返回有关,不需要可以注释掉)
  8. 开始正式写app,注意在定义的app目录下写入
  9. 新建视图控制package名为ctrl(忽略大小写)
  10. ctrl中新建类xxx.php
  11. 注意申明命名空间
  12. 在类和方法体上可以申明注解**@route::请求方法("路由")**
    /**
     *@route("/Test")
     */
    class TestCtrl{
        /**
         *@route::get("/test")
        */
        function test(){}
    }
    
  13. route("")中的路由名也可以不加斜线
  14. 或者也可以和配置路由一起使用,在配置文件中申明'route'(忽略大小写)项,按仿照默认的格式书写路由(大小写严格)
  15. 现在function test(){}写上什么,打开你的浏览器,输入路由,看一看吧
  16. 更多使用请查看示例文件:
ROOT\test.php 中写了一些缓存测试
APP\ctrls\indexCtrl.php 中示例了mysql的连接和使用()。以及模板引擎的使用方法
  1. 关于模板引擎:通过composer使用的Twig,查看Twig官网

  2. Apache 配置.htaccess 重写请求,全部请求转到index.php中 关闭所有的php请求 打开index.php的请求 打开路径为/static/*的请求

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]
<FilesMatch "^(.*)\.php$">
    Order Deny,Allow
    Deny from all
</FilesMatch>
<FilesMatch "^index\.php$">
    Order Allow,Deny
    Allow from all
</FilesMatch>
<FilesMatch "^static//(.*)$">
    Order Allow,Deny
    Allow from all
</FilesMatch>
  1. Nginx:
    location / {  
        root /rootPath/;  
        index index.php index.html index.htm;
        if (!-e $request_filename) {  
        rewrite ^/(.*)$ /index.php?s=$1 last;
        }  
    }  
  1. 全局函数。请查看常用方法function.php
  2. 将MEDOO移动到了library下,因此,直接支持
  3. 使用redis缓存和apc缓存,请安装并配置php