PHP的Aura是一个很棒的框架,我想传达一下我对它的零散想法
我也想像某人那样写一篇关于●●琐感的文章。
如果有人不了解Aura,可以先参考一下这方面的资料:
-
PHPフレームワーク「Aura v2」がクリーン過ぎるので試してみる
所以,在这篇文章里,我不打算解释如何使用Aura,而是随便写一些围绕它的整体事物。
从主题上来说,大概是这个样子:
-
良質で軽量・クリーンなコンポネント群
Framework of Framework
高品质、轻量、清洁的组件组
如果被问到”Aura是什么”,我的感觉可能是它不是一个框架,而是一系列组件。
Aura.Di(依赖注入)存在,并且Aura.Router(URL解析和动作确认)存在,并且Aura.Dispatcher(应用程序执行)存在,并且Aura.Web(HTTP请求,响应相关等)等等存在,拥有构建应用所需的所有组件。
嗯,如果觉得这种感觉在哪里见过的人,多半是在回忆起来,对了对了,Symfony2的Symfony组件。
用中文用一种方式来比较Symfony和Aura的话,可以形容为”Symfony是个壮硕的大汉,而Aura则是个矫健的瘦子”。而且,相比起来,Aura的代码整体来说比较容易阅读。
也许,如果将Aura看作是(至今为止与其他类似的)Web应用框架,想要尝试使用它的话,可能会不知道该如何使用,从何开始。虽然有一些教程可供参考。
顺便说一句,Aura 的网站上并没有把整个东西称为“框架”。Aura 是为高质量的应用程序提供高质量工具。菜单栏上有“框架”一词,但实际上这是重点,可能在大众所想象的框架这个术语中,这里的内容是指类似 Aura.Framework_Project 和 Aura.Web_Project 这样的所谓“框架”的东西,简单来说,这是使用 Aura 组件的 Web 应用程序框架的示例实现,这样理解起来更容易。(还有 CLI 框架)。Aura 的存在并非以框架为前提,而是由各个组件集合而成,并提供了使用这些组件的 Web 应用程序框架的示例实现,就是这样的感觉。
框架的框架 de
所以,对于像@koriym的BEAR这样的项目,最近有一些类似于使用Symfony组件的Laravel这样的项目。
-
良質なコンポネント群を提供する OSS プロジェクト
それを利用した Web Application Framework を提供する OSS プロジェクト
有一种感觉,可能有两个主要的趋势。
可能性の一つは、PerlがもともとCPANというパッケージ管理システムを持っていたため、コミュニティが自由にモジュールを作成・共有できる環境が整っていたことです。そのため、Perlを使ったWebアプリケーションフレームワークを作りやすかったのです。一方、PHPは元々自立した言語であり、パッケージ管理システムが整備されていなかったため、同様の環境がなかったのかもしれません。しかし、最近はPHPのコミュニティも成熟し、Composerなどのパッケージ管理ツールが登場したことで、より使いやすくなりました。このような流れから、PHPでもPerl同様にパッケージを組み合わせてフレームワークを作ることが可能になってきたのかもしれません。
-
PHPは元々言語そのものが、HTTP からのディスパッチとか、パラメーターのやりとりとかをしてくれていたからあまり必要性がなかった
PHP 5.3 以降の言語仕様自体の進化によって再利用可能なライブラリを作りやすくなった
PSR-0, PSR-4 (PHP-FIG) と composer の台頭
可能附近吧。
在第二次PHP框架战争(如symfony1,CakePHP1,Ethna等的时代)期间,许多人在许多框架中重新实现了许多相同的代码的情况有所减少,进入了一个好的时代。哎呀,难道PHP-FIG(PHP框架互操作性组)的目标正在实现吗?
嗯,Zend Framework 最初大概是以相同的理念存在的,但也许有点太早了。随着PHP本身语言规范的发展以及周围环境的变化,库和社区也在逐渐改变,就是这种感觉吧。
然而,如果这样说的话,现在除了Laravel之外几乎没有其他强大的力量。CakePHP用户和CodeIgniter用户相对较多地集结在Laravel上,目前来看,Symfony组件和基于Symfony组件的Laravel在组件时代占据了主导地位(个人观点)。哦,当然,这并不是说谁胜谁负。

所以,我们接下来该做些什么呢?
总而言之,如果要选择一个框架,那就选择 Laravel。如果觉得它使用起来不方便,那可以考虑结合 Aura 或 Symfony 等组件来创建自己独特的框架。不方便使用,不仅仅是指写代码的方式,还包括框架的重量、可扩展性和维护性等综合因素考虑。
使用原始的 PHP,或者将之前在公司内使用的轻量级自定义框架改用 Aura 或 Symfony 的组件进行重写,这样会是一个合理的选择。