phplist / core
phpList的核心模块,全球最受欢迎的开源新闻邮件管理器
Requires
- php: ^7.2|^8.0
- doctrine/common: ^2.6.0
- doctrine/doctrine-bundle: ^1.8.0
- doctrine/orm: ^2.5.0
- jms/serializer-bundle: ^3.8.0
- sensio/distribution-bundle: ^5.0.6
- sensio/framework-extra-bundle: ^5.1.0
- symfony/config: ^3.4.37
- symfony/dependency-injection: ^3.4.37
- symfony/monolog-bundle: ^3.1.0
- symfony/symfony: ^3.4.37
- symfony/yaml: ^3.4.37
Requires (Dev)
- composer/composer: ^1.6.0
- doctrine/instantiator: ^1.0.5
- guzzlehttp/guzzle: ^6.3.0
- nette/caching: ^2.5.0|^3.0.0
- nikic/php-parser: ^3.1.0
- phpmd/phpmd: ^2.6.0
- phpstan/phpstan: ^0.7.0|0.12.57
- phpunit/dbunit: ^3.0.0
- phpunit/phpunit: ^6.5.6
- phpunit/phpunit-mock-objects: ^5.0.6
- squizlabs/php_codesniffer: ^3.2.0
Suggests
- phplist/rest-api: 4.0.x-dev
- phplist/web-frontend: 4.0.x-dev
- dev-main
- v4.0.0-alpha5
- v4.0.0-alpha4
- v4.0.0-alpha3
- v4.0.0-alpha2
- v4.0.0-alpha1
- dev-dependabot/github_actions/dot-github/workflows/actions/download-artifact-4.1.7
- dev-phplist3
- dev-cleanup/document-running-phpunit-1
- dev-feature/templates-domain-repository
- dev-wip/access-trait
- dev-test/di
- dev-releases/4.0.0-alpha1
This package is auto-updated.
Last update: 2024-09-03 21:17:21 UTC
README
关于phpList
phpList是一个开源的新闻邮件管理器。本项目是对原始phpList的重新编写。
关于此包
这是phpList 3后续版本的核心模块。它将承担以下职责
- 通过Doctrine模型和存储库(以及为性能关键部分提供的原始SQL)访问数据库
- 路由(Web前端和REST API将使用)
- 身份验证(Web前端和REST API将使用)
- 日志记录
- 一个可以从命令行(或cron作业)调用的任务脚本
- 创建和更新数据库模式的任务
请注意,此模块不提供Web前端或REST API。为此,存在单独的模块phpList/web-frontend
和phpList/rest-api
。
此模块不应在本地修改。应通过Composer进行更新。
安装
由于此包仅是运行完整phpList 4安装所需的服务,因此推荐安装此包的方法是在需要此包的phpList基本分发版内部运行composer install
。 phpList/base-distribution
在其README中包含详细的安装说明。
为此包做出贡献
对phpList存储库的贡献非常受欢迎!要开始,请查看贡献指南。它包含您需要制作第一个贡献的所有内容,包括如何运行本地样式检查和运行测试。
行为准则
本项目遵守贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。
结构
运行Web服务器
phpList应用程序配置为内置PHP Web服务器可以在开发和测试模式下运行,而Apache可以在生产模式下运行。
请首先在config/parameters.yml
中设置数据库凭据。
开发
要使用PHP的内置服务器以开发模式运行应用程序,请使用此命令
bin/console server:run -d public/
服务器将监听http://127.0.0.1:8000
(如果端口8000已被占用,则监听8000之后的下一个可用端口)。
您可以使用CTRL + C停止服务器。
开发和文档
我们使用 phpDocumentor
自动为类生成文档。为了使此过程更高效、更简单,您需要通过添加 docblocks 注释来正确“文档化”您的 classes
、properties
、methods
等。
关于在 PHPDOC.md 中生成文档的更多信息
测试
要运行测试模式的服务器(通常只需要用于自动测试,请提供 --env
选项
bin/console server:run -d public/ --env=test
生产
有关使用 Apache 运行应用程序的文档,请参阅 phpList 基础发行版 README。
更改数据库模式
对数据库模式的任何更改都必须在 phpList 3 及以后的版本中同时进行,以确保这两个版本始终具有相同的模式。
要更改数据库模式,请编辑 resources/Database/Schema.sql
并相应地调整对应的领域模型类和存储库类。
开发 phpList 模块(插件)
在 phpList 中,插件被称为 模块。它们是具有 phplist-module
类型的 Composer 包。
捆绑和路由配置
如果您的模块提供了任何 Symfony 捆绑包,则需要将捆绑类名称列在模块的 composer.json
文件的 extra
部分,如下所示
"extra": { "phplist/core": { "bundles": [ "Symfony\\Bundle\\FrameworkBundle\\FrameworkBundle", "PhpList\\Core\\EmptyStartPageBundle\\PhpListEmptyStartPageBundle" ] } }
请注意,带有 extra
的部分的键始终需要是 phplist/core
,而不是您的模块包的名称。请参阅 rest-api
模块中的 composer.json
以获取示例。
类似地,如果您的模块提供了任何路由,也需要在模块的 composer.json
文件的 extra
部分列出,如下所示
"extra": { "phplist/core": { "routes": { "homepage": { "resource": "@PhpListEmptyStartPageBundle/Controller/", "type": "annotation" } } } }
您还可以为您的模块提供系统配置
"extra": { "phplist/core": { "configuration": { "framework": { "templating": { "engines": [ "twig" ] } } } } }
建议使用 注解 在控制器类中定义路由,以使 composer.json 中的路由配置最小化。
访问数据库
要从模块访问 phpList 数据库表,请使用存储在 phplist/core
包(此包)中 src/Domain/
的 Doctrine 模型和存储库类。
要访问存储库,请通过 依赖注入 注入它。请不要直接从实体管理器获取存储库,因为这会跳过该存储库的依赖注入,导致依赖于其他已注入服务的那些方法中断。
目前,只有少数数据库表被映射为模型/存储库。如果您需要尚未提供的模型或存储库方法,请 提交拉取请求 或 提交问题。
从第三方应用程序访问 phpList 数据
要从第三方应用程序(即不是从 phpList 模块)访问 phpList 数据,请使用 REST API。
版权
phpList 版权所有 (C) 2000-2021 phpList Ltd。