z7 /hydra
舒适型的RESTful PHP5.3微型框架。
Requires
- php: >=5.3.4
- monolog/monolog: 1.*
- symfony/http-kernel: 2.*
- twig/twig: 1.*
Requires (Dev)
- symfony/finder: 2.*
Replaces
- z7/hydra: dev-master
This package is not auto-updated.
Last update: 2024-09-28 16:15:31 UTC
README
舒适型的RESTful PHP5.3微型框架。
要求
- Http服务器(建议使用带有"AllowOverride All"的Apache 2)
- PHP 5.3
入门
- 下载默认应用模板。
- 将其解压缩到您的Apache网站文件夹中的某个位置,例如在hydra_app中。请确保应用能够创建data和hydra子文件夹。
- 在
web/index.php中,在$app->run();之前插入以下行:
$app->route('GET', 'hello/%name', function($name) { return "Hello, $name!"; });
在浏览器中打开https:///hydra_app/hello/John以查看执行结果。
特性
- 强大的安全性:XSS、点击劫持、CSRF和代码注入保护。表单和请求数据规范化。
- 路由器,支持回调和控制器类(使用注解)。
- JSON和HTML 数据转储,用于快速构建Web服务原型。
- 表单构建器,具有猜测功能,允许您通过一个简单的
$app->form(array('data' => $data))调用直接编辑任何数据。 - 服务容器,包括注入服务和工厂(属性和方法)以及在运行时扩展/覆盖/取消设置它们的功能。不再存在扩展核心类的问题。
- 钩子系统,具有直观的执行流程控制(加权钩子)和自动扫描插件钩子文件。
- 以MongoDB和PDO类为例的示例服务实现。
- 缓存 - 在生产中运行得更快。
- 简单的
Requests/Response工作流程,具有流式传输内容的能力;在每个步骤中都有钩子,具有中断能力。 - 会话、Cookie和持久配置 - 只需在这些数组访问启用的服务中设置属性/值,它就会在后续请求中存在。或者您可以使用IDE自动完成对象访问语法来访问已知属性。几乎神奇!
- Twig。当然,您可以创建自己的PHP模板或甚至是一个模板引擎,但首先,看看Twig能提供什么。
- Monolog 日志记录 + FirePHP/ChromePHP支持 + Symfony的
异常处理程序(具有调试/生产预设)= 容易调试。 - 对IDE极为友好。所有服务和动态方法都支持自动完成。
- 使用Twitter Bootstrap创建的简洁UI。
- 以源代码形式分发,作为独立的
phar文件和hydra/hydra composer包。
为什么还需要另一个框架?
我想打破一些PHP的陈规,就像John Resig在JavaScript世界中用jQuery所做的那样。
Hydra 的概念是在多个 REST 应用程序的原型设计阶段产生的。最初我使用了 Silex。那时候我认为它是一个非常优秀的微框架,可以快速地将 RESTful 路由与一些 MongoDB 和 PDO 代码连接起来。一段时间后,很明显,虽然闭包和路由模式很好且很酷,但服务容器的直观性和强大性并不高。没有 IDE 自动补全服务,语法奇怪,功能提供者臃肿,它并没有像我希望的那样直接工作。还有一件事,我注意到的是,由于缺少缓存例程和重量级的组件架构,导致速度减慢,而我对基本的 IO 需求并不多,大部分已经由 PHP 本地提供。当然,Hydra 中也有一些很好的概念...
我的结论是,大多数框架,即使是微框架,也过于关注经典 OOP 模式,而没有充分利用 PHP 提供的一些最好的功能。有些框架通过重新实现已经在 PHP 中可用的标准功能而变得过于臃肿。虽然有一些例外,但大多数框架提供的小增值并不多,同时使事情变得缓慢。最后,似乎直接从最好的参与者那里获取好的组件(如主题、日志记录、错误处理)并重新思考核心以使其更薄、更灵活,这样会更节省时间。
使用的配料
- Symfony 组件(错误/异常处理器、MIME 类型猜测器)
- Twig
- Twitter Bootstrap
- Monolog
你为什么叫它“Hydra”?
因为这代表了愿景。九头蛇(神话生物)可以动态地长出头部。
我们试图将这种临时生长应用于 OOP。在版本 5.3 之前,这很难实现,在 5.0 之前根本不可能。现在,我们有了魔法方法、闭包、SPL 和传统的解释器功能,我们有机会将它们结合起来,形成一个非常灵活且简单的依赖注入系统。这是将酷的运行时对象形态提升到新水平。
贡献
Hydra 目前处于开发初期阶段,所以您的反馈非常重要。分享、讨论、发布问题、提出功能请求、撰写评论。最好的还在后面!
如果您想贡献源代码,请在跟踪器中留言或直接写信到sandu@lungu.info。