SYMLEX旨在通过提供一个以示例来促进最佳实践的工作系统来简化敏捷Web开发:
自2014年最初发行以来,它已被证明非常适合快速构建微服务,CLI和单页应用程序。它包含从测试到表格和数据库抽象的工作示例。只需删除您不需要的内容即可。
内核很小,仅创建一个服务容器,用于在其上下文中引导您的应用程序。与其他框架相比,使用单个容器进行配置和依赖注入可以降低复杂性,并导致性能提高。它还可以防止开发人员在不了解它们的情况下无意识地安装捆绑包。结果较不膨胀,更简单,更可维护和可测试的代码,这对于敏捷开发至关重要。
尽可能使用普通类,以避免供应商锁定并启用框架独立代码重复使用。请参阅“权衡”。
您可以将基于PHP的后端与任何JavaScript库或REST客户端相结合。前端样板板是为了方便的,可以直接通过WebPack和Vuetify构建令人印象深刻的单页应用程序,请参见Demo.symlex.org。还包括一个命令行应用程序的工作示例。
我们的完整框架文档可以在docs.symlex.org上找到。图齐·刘(Tuzi Liu)为我们保留了中文翻译。
注意:https://github.com/symlex/symlex-core包含内核和路由器作为可重复使用的组件。
在开始之前,请确保系统上安装了PHP 7.3+,作曲家和Docker(Mac OS X Howto)。运行get-composer.sh以在Linux上本地安装composer 。您可以根据现有的Dockerfile来设置自己的运行时环境,而不是使用Docker。此外,您将需要一个数据库和nodejs和npm来构建前端。
步骤1:运行composer创建一个新的Symlex项目:
composer create-project symlex/symlex myapp
作曲家将要求配置值为您生成app/config/parameters.yml 。
确保storage/cache是可写的,以便可以由应用程序创建缓存文件。
步骤2:使用docker-compose启动Roadrunner和Mariadb:
cd myapp
docker-compose up
注意:此配置仅用于测试和开发目的,有关详细信息,请参见Docker-Compose.yml中的评论。出于安全原因,如果您使用其他用户运行Docker,则可能需要调整它。在OS X上,Docker的当前版本在从主机的文件系统中执行PHP确实很慢。 docker-compose up -d在后台运行Docker,但是在这种情况下,您不会看到有用的日志消息。
步骤3:让初始化数据库并为您构建前端组件:
make terminal
make all database
要验证一切都在起作用,请运行make test 。
注意:您还可以使用此方法以稍后执行其他CLI命令。制造应预先安装在典型的UNIX开发环境中 - 否则,您可能必须先通过Xcode-elect上安装Xcode命令行工具,或者通过xcode-select --install或通过在Linux上添加build-base或build-essential软件包。 Makefile包含所有目标的列表。
成功安装后,打开网站http:// localhost:8081/,并使用密码passwd登录为[email protected] 。
YAML文件位于app/config中的基于参数和服务的应用程序。主配置文件是app/config/web.yml和app/config/console.yml 。
如果将localhost-debug添加到您的/etc/hosts并使用此访问网站,则将加载到调试模式(您将在错误页面上看到堆栈跟踪和其他调试信息)。
MailHog用户界面可在http:// localhost:8025/。它可用于接收和查看系统自动发送的邮件,例如创建新用户时。
如果您想构建一个更轻巧的应用程序,请查看我们的其他示例:
完整文档:https://docs.symlex.org/en/latest/framework/
Symlex现在包括RoadRunner(高性能PHP应用程序服务器)作为NGINX的替代方案。当您构建Docker映像时,它将自动下载。
我们的Symlex> = 4.4.0的安装说明对于以前的发行版无法使用,因为它们仍然使用nginx和php-fpm。现在有一个由Roadrunner提供支持的单个app服务,而不是web和php 。如果您喜欢NGINX,则可以使用较旧的版本或将上一个配置复制到新版本。我们的一些示例应用程序也使用nginx。
Symlex由Michael Mayer维护,旨在通过提供以身作则来促进最佳实践的工作系统来简化敏捷的Web开发。迈克尔(Michael)于2001年发布了他的第一个PHP框架,过去曾与各种主要框架供应商合作。没有其他开发人员的许多先前工作,建立这种情况是不可能的。感谢那些和所有贡献的人!
选择是生产力的敌人。换句话说,如果您的解决方案可以完成所有事情,并且对任何事情没有任何意见,那么它就无法解决。 - Asim Aslam
如果您有任何疑问,需要商业支持或只是想打个招呼,请随时发送电子邮件至[email protected]。我们欢迎任何形式的贡献。如果您有错误或想法,请在打开问题之前阅读我们的指南。
很明显,PHP框架性能主要取决于每个请求必须执行的代码行。虽然Symlex被设计为简单而精益,但良好的性能是这种方法非常重要的副产品。
最好的代码不是代码。没有代码的地方,没有错误。没有API可以学习。没有尴尬的UI。最好的重构是删除。 -埃里克·埃利奥特(Eric Elliott)
正如PhpBenchmarks.com发布的那样,与其他常见的PHP框架相比,REST请求快40%以上:
请注意,这些响应时间是在快速服务器硬件上以完全优化的生产模式测量的,只有5个并发请求。实际上,在绝对时间方面的差异可能会更大。也应考虑记忆消耗:
你为什么要关心?首先,您的用户会喜欢它。根据经验, 100毫秒是让他们感到系统即时反应的限制,这意味着除了显示结果外,无需特殊反馈。总响应时间还包括网络(〜25 ms),浏览器和其他开销,这仅在实现实际业务逻辑的100毫秒中仅留下一小部分。其次,您将为服务器基础架构节省大量资金,并且随着测试的运行速度,开发人员的生产力更高。
Symlex于2014年作为简单的Silex样板开始,因为Silex本身并不带有“标准版”,它将您指向正确的方向。 Sensiolab(两个框架的创建者)建议使用Silex代替Symfony,作为Symfony + Fosrestbundle的轻量级替代品,用于快速构建高性能的REST服务和单页Web应用程序。
很快注意到,对于来自Symfony的开发人员而言,Pimple(Silex随附的服务容器)感到很麻烦,并且很难重复使用现有代码。此外,许多Silex代码示例甚至是现实世界的应用程序都从代码的所有部分(不仅是框架本身)访问了服务容器,这些框架本身会绕过控制的反转并导致尴尬的可检验性。因此,Symlex促进了严格使用依赖注入,并将全面服务容器的便利性与微型框架的速度相结合。
如今,Symlex拥有自己的路由组件(基于Symfony 4),并且不再使用Silex。事实证明,该框架对于大量不同的应用程序很有用。其中一些以前是基于常规的符号内核,并且进行了更改,因为它们在复杂性上淹没了,并且在开发模式下的响应时间高于30秒。 Symlex使他们回到了正轨,而他们现有的代码群没有重大更改。
Symlex是一个完全由志愿者运行的非营利项目。欢迎您通过GitHub赞助商为我们提供支持,尤其是如果您在使用我们的软件方面需要帮助时。他们将与第一年的每笔捐款相匹配。
如果您喜欢这个项目,请留下明星,它为继续前进提供了其他动力。非常感谢! <3