z7/hydra

舒适型的RESTful PHP5.3微型框架。

dev-master / 0.x-dev 2014-10-18 15:48 UTC

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

入门

  1. 下载默认应用模板
  2. 将其解压缩到您的Apache网站文件夹中的某个位置,例如在hydra_app中。请确保应用能够创建datahydra子文件夹。
  3. web/index.php中,在$app->run();之前插入以下行:
$app->route('GET', 'hello/%name', function($name) {
  return "Hello, $name!";
});

在浏览器中打开https:///hydra_app/hello/John以查看执行结果。

请参阅我们的wiki以获取更多用法示例

特性

  • 强大的安全性: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 中可用的标准功能而变得过于臃肿。虽然有一些例外,但大多数框架提供的小增值并不多,同时使事情变得缓慢。最后,似乎直接从最好的参与者那里获取好的组件(如主题、日志记录、错误处理)并重新思考核心以使其更薄、更灵活,这样会更节省时间。

使用的配料

你为什么叫它“Hydra”?

因为这代表了愿景。九头蛇(神话生物)可以动态地长出头部。

我们试图将这种临时生长应用于 OOP。在版本 5.3 之前,这很难实现,在 5.0 之前根本不可能。现在,我们有了魔法方法、闭包、SPL 和传统的解释器功能,我们有机会将它们结合起来,形成一个非常灵活且简单的依赖注入系统。这是将酷的运行时对象形态提升到新水平。

贡献

Hydra 目前处于开发初期阶段,所以您的反馈非常重要。分享、讨论、发布问题、提出功能请求、撰写评论。最好的还在后面!

如果您想贡献源代码,请在跟踪器中留言或直接写信到sandu@lungu.info