V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
szopen
V2EX  ›  PHP

极简框架 toknot 3.0 beta 发布,欢迎测试

  •  
  •   szopen · 2015-03-10 22:03:28 +08:00 · 3102 次点击
    这是一个创建于 3532 天前的主题,其中的信息可能已经有所发展或是发生改变。
    框架下载地址 https://github.com/chopins/toknot
    相对于以前版本,现在精简了一些不必要的功能,将不常用功能移动到Lib目录。

    框架主要功能:
    1. 全命名空间开发,全面向对象
    2. 路由器:支持URL直接映射为App的类名,并且URL不区分大小写,
    分离HTTP请求Method到类方法上,方便开发RESTFull API
    支持通过正则表达式定制路由表
    3. 异常处理:PHP运行时错误转为异常;
    错误回溯帮助快速定位问题代码,避免封装层次过多时无法找到问题点;
    Notice,Warning转异常从而避免其被忽略,而出现问题代码。
    通过异常定制HTTP返回状态码
    4. 数据库:全PDO操作,全面向对象操作
    5. 模板:一个简单的模板处理类
    6. 自动加载:按命名空间名字自动加载类文件
    7. 命令行调式
    8. 其他轮子请到https://packagist.org寻找与下载

    使用方法:
    1. 初始化App: 命令行下执行 php -f /yourpath/Toknot/Toknot.php CreateApp
    2. 配置 /your-app-path/YourAppNS/Config/config.ini
    3. 配置Web服务器:将所有请求重写到 /your-app-path/YourAppNS/WebRoot/index.php

    框架下载地址 https://github.com/chopins/toknot
    9 条回复    2015-10-01 05:05:03 +08:00
    phoenixlzx
        1
    phoenixlzx  
       2015-03-10 22:10:22 +08:00
    这目录的命名方式.... 为何一股浓浓的 ThinkPHP 既视感...
    szopen
        2
    szopen  
    OP
       2015-03-10 23:07:00 +08:00
    @phoenixlzx 因为类自动加载器是根据命名空间来找文件的,所以这种目录命名是比较简洁的方式
    raincious
        3
    raincious  
       2015-03-10 23:37:37 +08:00 via Android
    不知道是不是有资格给建议,但是还是建议整理一下工作流,这样就不需要exit关键字之类的了。

    另外main函数如果仅仅只做那一个功能(初始化一个实例然后返回给根scope),那么看不出它的意义,不如直接将初始化写到外面就好了。(是吧?)

    另外render就是渲染器的意思,嗯。还有注释最好整理下,有些看上去是赶时间写的,看不太明白,比如kernel:: $standardAutoLoader的。

    我只是扫过了几个单元,所以目前只看到这些。不过能看出你在这上头花了不少时间 :)
    phoenixlzx
        4
    phoenixlzx  
       2015-03-11 00:14:07 +08:00 via Android
    @szopen 我不懂PHP。。。我只是在吐槽开头大写的目录名233
    ewex
        5
    ewex  
       2015-03-11 02:20:38 +08:00
    文件、文件名开头大写的直接无视
    iscraft
        6
    iscraft  
       2015-03-11 09:48:44 +08:00
    框架名字有种东京热的感觉
    szopen
        7
    szopen  
    OP
       2015-03-11 10:08:36 +08:00
    @ewex 这是个人喜好问题,不可能满足所有人的喜好
    szopen
        8
    szopen  
    OP
       2015-03-11 10:14:15 +08:00
    @raincious main函数是强迫症问题,Kernel:: $standardAutoLoader是历史遗留代码
    lloydzhou
        9
    lloydzhou  
       2015-10-01 05:05:03 +08:00
    推荐一个精简的 Router 库做路由控制器 https://github.com/lloydzhou/router ,可以根据映射的 handler 自动从 request 获取变量,支持自定义 error handler 和 hook 。可以通过 hook 方便的定制参数过滤、登录检查等。

    (new Router())
    ->error(405, function($message){
    header('Location: /hello/world', true, 302);
    })
    ->get('/hello/:name', function($name){
    echo "Hello $name !!!";
    })
    ->execute();
    项目挺不错的。可以看看。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2702 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:45 · PVG 17:45 · LAX 01:45 · JFK 04:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.