lastzero / symlex
基于Symfony和Vuetify的敏捷Web开发轻量级框架栈
Requires
- php: ^7.3
- ext-pdo_mysql: *
- doctrine/dbal: ^2.8
- doctrine/migrations: ^1.1
- gregwar/captcha: ^1.0
- incenteev/composer-parameter-handler: ^2.0
- monolog/monolog: ^1.0
- nyholm/psr7: ^1.1
- psr/simple-cache: ^1.0
- spiral/roadrunner: ^1.5
- swiftmailer/swiftmailer: ^5.0
- symfony/psr-http-message-bridge: ^1.2
- symlex/doctrine-active-record: ^4.3
- symlex/input-validation: ^4.2
- symlex/symlex-core: ^4.4
Requires (Dev)
- lastzero/test-tools: ^5.0
- dev-master
- v4.4.4
- v4.4.3
- v4.4.2
- v4.4.1
- v4.4.0
- v4.3.0
- v4.2.11
- v4.2.10
- v4.2.9
- v4.2.8
- v4.2.7
- v4.2.6
- v4.2.5
- v4.2.3
- v4.2.2
- v4.2.1
- v4.2.0
- v4.1.3
- v4.1.2
- v4.1.1
- v4.1.0
- v4.0.3
- v4.0.2
- v4.0.1
- v4.0.0
- v3.0.6
- v3.0.5
- v3.0.4
- v3.0.3
- v3.0.2
- v3.0.1
- v3.0.0
- v2.4.2
- v2.4.1
- v2.4.0
- v2.3.0
- v2.2.1
- v2.2.0
- v2.1.4
- v2.1.3
- v2.1.2
- v2.1.1
- v2.1.0
- v2.0.4
- v2.0.3
- v2.0.2
- v2.0.1
- v2.0.0
- v1.1.1
- v1.1.0
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- v0.9
- v0.8
- v0.7
- v0.6
- v0.5
- v0.4
- v0.3
- v0.2
- v0.1
- dev-dependabot/npm_and_yarn/frontend/log4js-6.4.0
- dev-dependabot/npm_and_yarn/frontend/tar-4.4.18
- dev-dependabot/npm_and_yarn/frontend/path-parse-1.0.7
- dev-dependabot/npm_and_yarn/frontend/postcss-7.0.36
- dev-dependabot/npm_and_yarn/frontend/browserslist-4.16.5
- dev-dependabot/npm_and_yarn/frontend/chart.js-2.9.4
- dev-dependabot/npm_and_yarn/frontend/hosted-git-info-2.8.9
- dev-dependabot/npm_and_yarn/frontend/lodash-4.17.21
- dev-dependabot/npm_and_yarn/frontend/ssri-6.0.2
- dev-dependabot/npm_and_yarn/frontend/y18n-4.0.1
- dev-dependabot/npm_and_yarn/frontend/elliptic-6.5.4
- dev-dependabot/npm_and_yarn/frontend/socket.io-2.4.1
- dev-dependabot/npm_and_yarn/frontend/axios-0.21.1
- dev-dependabot/npm_and_yarn/frontend/ini-1.3.7
- dev-dependabot/npm_and_yarn/frontend/acorn-6.4.1
- dev-roadrunner
This package is auto-updated.
Last update: 2022-02-21 21:14:36 UTC
README
Symlex旨在通过提供促进最佳实践的示例工作系统来简化敏捷Web开发
- 基于良好记录和测试的标准组件构建
- 包含创建全功能Web应用所需的一切:服务容器、REST路由和Twig模板引擎
- 严格使用依赖注入进行配置和引导
- 代码和内存占用小
- 与其他PHP框架相比,速度极快,尤其是在与RoadRunner结合使用时
自2014年首次发布以来,它已被证明非常适合快速构建微服务、CLI和单页应用程序。它包含从测试到表单和数据库抽象的完整示例。只需删除不需要的部分即可。
内核非常小巧,仅在其上下文中为您的应用程序创建一个服务容器。使用单个容器进行配置和依赖注入可以降低复杂性,并与其他框架相比提高性能。它还可以防止开发者不加思考地安装不了解的包。结果是减少冗余、更简单、更易于维护和测试的代码,这对于敏捷开发至关重要。
尽可能使用普通类来避免供应商锁定并实现框架无关的代码重用。请参阅TRADEOFFS.md。
您可以将基于PHP的后端与任何JavaScript库或REST客户端结合使用。前端模板为您的方便而设计,可让您直接使用Webpack和Vuetify构建令人印象深刻的单页应用程序,请参阅demo.symlex.org。还包括命令行应用程序的工作示例。
我们的完整框架文档可以在docs.symlex.org上找到。由Tuzi Liu为我们维护了中文翻译。
注意:https://github.com/symlex/symlex-core包含内核和路由器作为可重用的组件。
设置
在开始之前,请确保您的系统中已安装PHP 7.3+、Composer和Docker(对于Mac OS X的安装方法)。在Linux上,运行get-composer.sh以本地安装composer。您可以使用基于现有Dockerfile的运行时环境来代替Docker。此外,您还需要一个数据库以及nodejs和npm来构建前端。
第一步:运行composer创建一个新的Symlex项目
composer create-project symlex/symlex myapp
Composer将要求您输入配置值,以为您生成app/config/parameters.yml。
请确保storage/cache可写,以便应用程序可以创建缓存文件。
第二步:使用docker-compose启动RoadRunner和MariaDB
cd myapp
docker-compose up
注意:此配置仅用于测试和开发目的,有关详细信息,请参阅docker-compose.yml中的注释。如果您出于安全原因使用不同的用户运行Docker,可能需要对其进行调整。在OS X上,当前版本的Docker在执行主机文件系统中的PHP时非常慢。docker-compose up -d将Docker在后台运行,但在此情况下您将看不到有用的日志消息。
第三步:让Make初始化数据库并为您构建前端组件
make terminal
make all database
为了验证一切正常,运行make test。
注意:您还可以使用这种方法在以后执行其他CLI命令。Make通常预安装在典型的Unix开发环境中 - 否则,您可能需要首先获取它,例如,通过在OS X上通过xcode-select --install安装Xcode命令行工具或在Linux上添加build-base或build-essential包。The Makefile包含所有目标的列表。
安装成功后,打开https://:8081/,并使用密码passwd登录为admin@example.com。
位于app/config的YAML文件根据参数和服务配置应用程序。主要配置文件是app/config/web.yml和app/config/console.yml。
如果您将localhost-debug添加到您的/etc/hosts,并使用该地址访问网站,它将以调试模式加载(您将在错误页面上看到堆栈跟踪和其他调试信息)。
mailhog用户界面可在https://:8025/中找到。它可以用于接收和查看系统自动发送的邮件,例如,当创建新用户时。
如果您想构建一个更轻量级的应用程序,请查看我们的其他示例
完整文档:https://docs.symlex.org/en/latest/framework/
RoadRunner
Symlex 现在包括了一个高性能的 PHP 应用服务器 RoadRunner,作为 NGINX 的替代方案。在构建 Docker 镜像时,它将自动下载。
我们为 Symlex >= 4.4.0 的安装说明不适用于早期版本,因为它们仍然使用 NGINX 和 PHP-FPM。现在有一个由 RoadRunner 驱动的单个 app 服务,而不是 web 和 php。如果你更喜欢 NGINX,可以使用旧版本的 发布版 或者将以前的配置复制到新版本。一些示例应用程序也使用 NGINX。
关于
Symlex 由 Michael Mayer 维护,旨在通过提供一个能通过示例促进最佳实践的运行系统来简化敏捷 Web 开发。Michael 在 2001 年发布了他的第一个 PHP 框架 AWF,并且以前与各种主要框架供应商合作过。如果没有其他开发者的大量前期工作,这项工作将无法完成。感谢那些贡献者以及所有人!
选择是生产力的敌人。换句话说,如果你的解决方案做任何事情,对任何事情都没有意见,那么它就没有解决问题。 —— Asim Aslam
如果您有任何问题、需要 商业支持 或者只是想打个招呼,请随时发送电子邮件至 hello@symlex.org。我们欢迎各种形式的贡献。如果您有错误或想法,在打开问题之前请阅读我们的 指南。
性能
很明显,PHP 框架的性能主要取决于每个请求必须执行的代码行数。虽然 Symlex 被设计成简单和精简,但良好的性能是这个方法的重要副产品。
最好的代码是没有代码。没有代码,就没有错误。没有要学习的 API。没有尴尬的 UI。最好的重构是删除。 —— Eric Elliott
如 phpbenchmarks.com 发布的,与其他常见的 PHP 框架相比,REST 请求快了 40% 以上。
请注意,这些响应时间是在完全优化的生产模式下在 快速服务器硬件 上测量的,只有 5 个并发请求。在实际应用中,绝对时间上的差异可能更大。还应考虑内存消耗。
为什么你应该关心? 首先,你的用户会喜欢它。一般来说,100 毫秒 是用户感觉到系统反应即时的大致极限,这意味着除了显示结果外,不需要任何特殊的反馈。总响应时间还包括网络 (~25 毫秒)、浏览器和其他开销,这仅留下了一小部分 100 毫秒用于实现实际的业务逻辑。其次,你将为服务器基础设施节省大量的资金,而且由于测试运行得更快,开发者也会更高效。
Symfony 和 Silex 的关系
Symlex于2014年启动,最初是一个简单的Silex模板,因为Silex本身并没有提供指向正确方向的“标准版”。SensioLabs(两个框架的创建者)推荐使用Silex代替Symfony,作为Symfony + FOSRestBundle的轻量级替代品,用于快速构建高性能REST服务和单页Web应用。
很快人们就发现,对于来自Symfony的开发者来说,Silex附带的Pimple服务容器使用起来有些繁琐,这使重用现有代码变得困难。此外,许多Silex代码示例甚至实际应用都是从代码的各个部分(而不仅仅是框架本身)访问服务容器,这规避了控制反转,导致测试变得尴尬。因此,Symlex提倡严格使用依赖注入,并结合了完整服务容器的便利性和微框架的速度。
如今,Symlex拥有自己的路由组件(基于Symfony 4),不再使用Silex。这个框架已被证明对大量不同的应用都很有用。其中一些之前基于常规的Symfony内核,并进行了更改,因为它们深陷复杂性,在开发模式下响应时间超过30秒。Symlex让他们在不对其现有代码库进行重大更改的情况下重新回到正轨。
捐赠
Symlex是一个由志愿者完全运营的非营利项目。您可以通过GitHub Sponsors支持我们,特别是如果您需要帮助我们使用软件。他们将匹配第一年的每一笔捐赠。
如果您喜欢这个项目,请留下一个星号,这将为继续前进提供额外的动力。非常感谢!<3