这两个框架已经走了很长一段路,如果您在2年前对它们熟悉,那么您今天可能根本不认识它们。在这方面,它们都不同于symfony,后者的变化要慢得多,甚至2.7和3.0版本之间的差异也不是很大。但是,如果将其与linux发行版进行比较,则Symfony类似于Debian,Laravel类似于Ubuntu,phpixie类似于Arch。PHPixie使用滚动发布方法,所有新功能和错误修正立即进入母版并获取版本标签,从而使它们尽快可用。但是必须更仔细地完成“ composer update”,并按照更改进行操作。在这里,我将立即提醒您,如果您使用“ composer install”,那么您将始终安装相同的版本,毫无疑问可以等待。这种方法迫使框架开发人员考虑向后兼容性,而不破坏现有的API。结果,您将代码与框架一起进行了一些升级,然后您就不必考虑Laravel 4跳到Laravel 5了,那里的所有内容都立即改变了,现在Laravel 4上的代码被认为是旧的。
有了PHPixie的速度,一切都保持了原样,而且速度也越来越快,因为路由代码和内核本身并没有太大变化,它仅获得了新的库,这些库只有在您使用它们时才会影响速度。Techempower的基准测试表明,在HHVM中laravel的速度也赶不上phpixie。原则上,我很少听到Laravel为工作速度而赞美,而是为发展速度而赞美,因此性能很可能从来没有被优先考虑。
毫无疑问,Laravel,laracasta,外墙,教程中的各种片段以及现成的捆绑包都使初学者甚至可以在最短的时间内创建一个网站,现在,它也可以直接由工匠使用。所有这一切都归因于框架本身的坚固性,尽管框架由组件组成,但是Laravel本身将它们合并为一个整体。PHPixie是严格模块化的,因此甚至没有一个DI容器,并且所有依赖项都是通过单独的工厂构建的,因此,您需要了解更多幕后情况。但是随着时间的流逝,我会说半年以来,学习曲线发生了变化。PHPixie是从头开始构建的,所有组件都是根据一个范例创建的,通过了解框架的一部分,使其更易于理解另一部分,从而使代码调试更加容易。到那时,在Laravel中,您将花费大量时间使用不同的方法和质量使用不同的开发人员的代码。但是,如果外墙以及所有对您真正重要的东西,那么可选的DI组件将使您获得相同的结果。
数据库和ORM组件发展最快,属于框架的最佳组成部分。模型清楚地分布到存储库,请求和实体本身。扩展不是继承模型的某些基础类,而是由Decorator模式执行的,这使您的代码完全独立于使用基础并经过基本测试的逻辑。即使用于构建查询,您也可以使用多种语法。当然,杀手级功能是它们都可用于SQL数据库和Mongo,包括不同数据库中实体之间的连接。Laravel在这里损失了很多,因为Eloquent离Kohana ORM和PHP ActiveRecord不远。与Laravel一起工作时,大多数经验丰富的开发人员都会使用Doctrine或Propel。同样,这完全取决于您的任务。
Laravel开发人员无疑非常多,而PHPixie还需要很多人去发现它的美好。我不否认Laravel社区的美好,但是我希望也能有更多地人加入到PHPixie中来。
PHPixie以其100%的测试覆盖率而闻名。顺便说一下,在这里,不仅代码覆盖范围本身很重要,而且它的可测试性也很重要。缺少魔术和外观,仅使您可以为单个类编写简短而快速的单元测试,而不必在每个测试上增加一堆依赖项。当然,在Laravel中也有测试,但是要少得多。
顺便说一句,当您尝试在新的PHPUnit上运行测试时,当您打开coverage的生成时,它只会引发错误。
在这里,我们再次有范式上的差异。Laravel作为更单一的框架提供了购买模型的能力,使您可以完全跳过控制器代码,例如:
$router->bind('user', function ($value) { return AppUser::where('name', $value)->first(); });
另外,大多数路由都具有名称,并且动态路由完全不存在(但是可以模拟)。PHPixie的路由组件更具自治性,甚至控制器的概念也不在其中,它所做的只是将请求解析为一组参数并将其传递给用户。反过来,这允许使用嵌套规则和前缀进行更灵活的配置。另一个区别是,在PHPixie中,路由是通过数组存储在配置文件中的,而在Laravel中是通过编程设置的,如果存在带有提示的IDE,这将更加方便。
PHPixie使用PCP作为模板引擎,这意味着所有常用功能(例如ucwords,substr,trim等)都已经可用,而不必学习新语言。PHPixie设法无需编译即可获得流行模板的所有优势,因此,您也可以使用模板继承和块支持。此外,您将在任何IDE中突出显示完整的语法,并使用Xdebug进行调试。Laravel Blade本身与Twig并没有太大区别,只是语法略有不同,但并没有带来任何新变化。
PHPixie基于PSR-7构建,它通过添加自己的包装器扩展了功能,但是您始终可以访问纯PSR-7请求。它还可以接收来自外部的请求,这使您可以轻松地在ReactPHP上运行框架。由于无状态架构以及ReactPHP,这也是可能的,这意味着在执行请求之后,框架保持原样,并且可以立即处理下一个而不重新启动。Laravel是基于symfony的HTTP组件构建的,该组件构建了它的请求,您仅可以使用symfony / psr-http-message-bridge将它们转换为PSR-7 ,这至少会在每个请求上添加开销数据。尽管在下一个版本的Laravel中最有可能将完全切换到PSR-7。
向Laravel添加身份验证非常容易,该配置实际上是开箱即用的,但是实现仍然有很多不足之处。在PHPixie中,“ remember_me”的实现是基于最佳实践的,即每个设备为一个帐户拥有自己的令牌,同时每次使用时也会进行更新。仅仅因为其可丢弃性而窃取这样的令牌是没有意义的。另外,在PHPixie中设置授权更加灵活,您可以在一个配置中创建多个令牌,使用会话或仅使用cookie以及现在的社交授权。
与PHPixie一样,Laravel也由组件组成,例如,无需框架本身即可使用Eloquent非常简单。但是其他组件,例如相同的身份验证,与框架本身的联系更多,而将它们与另一个框架一起使用并不是那么容易。PHPixie最初被认为是独立的组件,很重要的是,在github上,每个PHPixie组件都位于单独的存储库中,而Laravel将所有内容存储在一个项目中,并为组件提供只读存储库。
最后,Laravel目前被过度夸大了,我们不应该也不可能只有一个框架一家独大,我相信百花齐放的编程世界才更美好。