noctis / kickstart-app
Kickstart项目中的用户应用程序部分。
Requires
- php: ~8.1.0
- composer-runtime-api: ^2
- laminas/laminas-diactoros: ^2.24
- noctis/kickstart: ~4.0.0
- paragonie/easydb: ^3.0
- psr/container: ^1.1|^2.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- symfony/console: ^6.2
- vlucas/phpdotenv: ^5.5
Requires (Dev)
- roave/security-advisories: dev-latest
- squizlabs/php_codesniffer: ^3.7
- symfony/var-dumper: ^6.2
- vimeo/psalm: ^5.4
This package is auto-updated.
Last update: 2024-09-09 20:46:49 UTC
README
这是什么?
它是Kickstart项目的一部分,是一个骨架/示例应用程序。Kickstart项目本身由两部分组成
- 应用程序部分(本部分),
- 系统部分 -
noctis/kickstart包。
此应用程序包含用户应该能够修改的所有文件,以便创建自己的基于Kickstart的应用程序。
它有什么好处?
Kickstart是为了构建基于PHP的微型和小型应用程序而创建的,无论是Web还是命令行界面(CLI)。
好的,那么我该如何安装这个应用程序呢?
重要: Kickstart有两个主要平台要求
- PHP 8.1.x,
- Composer 2.0.x。
要创建一个新的基于Kickstart的项目,请在您的命令行界面中运行以下命令,让Composer执行其操作
$ composer create-project noctis/kickstart-app app-name
重要:在上面的命令中,将 app-name 替换为您想要的任何名称。 app-name 是将在当前工作目录中创建的文件夹的名称。
使用Docker开发您的应用程序
有关开发基于Kickstart的应用程序的所有信息,都可以在 此文档 中找到。
好的,它已经安装了。现在怎么办?
现在您可以自由地修改/添加 app-name 文件夹(或您更改的任何名称)中的文件来构建您的应用程序。我在项目中包含了一些示例/虚拟文件来帮助您开始。如果您不需要这些文件,您可以完全删除它们。有关如何做到这一点的说明,请参阅 此处。
重要:如果您正在构建基于Web的应用程序,请配置您的WWW服务器以从 public 目录提供文件。
应用程序组件
一个全新的基于Kickstart的项目由几个部分组成
- 配置,
- HTTP动作(带有模板/视图),
- 控制台命令,
- 服务提供者,
- 数据库存储库,
- 服务。
配置
项目的配置可以在其根目录中的 .env 文件中找到。
永远不要在您的项目中提交 .env 文件 - 它包含必须保持私密的敏感信息!
这是默认的 .env 文件的样子
# Valid values: prod, dev APP_ENV=dev # "/" for root-dir, "/foo" (without trailing slash) for sub-dir basehref=/ db_host=localhost db_user=dbuser db_pass=dbpass db_name=dbname db_port=3306
以下是对每个选项含义的概述
APP_ENV
此选项可以取两个值之一
prod或开发.
将其设置为 prod 会改变三件事
- PHP错误消息被隐藏,
- 模板(视图)被缓存;对它们的任何更改都不会在浏览器刷新页面时可见,
- 依赖注入容器(DIC)将被 编译并保存到文件中(默认情况下在
var/cache/container中),这将提高应用程序的性能,但代价是DIC将忽略依赖注入配置的任何更改。
将其设置为 dev 会造成
- PHP错误消息被显示,
- 模板(视图)不会被缓存;对它们的任何更改都会在浏览器刷新页面后立即可见。
- 依赖注入配置(DIC)会注意对任何更改,但可能会略微影响应用程序的性能。
在生产环境中,此选项应设置为prod,在开发期间设置为dev。
如果您正在更改模板/视图,但在浏览器中看不到更改 - 要么清除缓存,通过删除var/cache/templates目录的内容,要么将.env中的APP_ENV选项设置为dev。
如果您正在更改服务提供者或类的构造函数(依赖注入)以及DIC(依赖注入容器)未能看到这些更改,请清除var/cache/container目录的内容或将.env文件中的APP_ENV选项设置为dev。
basehref
这是应用程序从浏览器中可用的URI。如果它位于例如:localhost,应使用默认值/。如果它位于子目录中,例如:localhost/kickstart,则应将basehref值设置为/kickstart。
重要: .env中的barehref值和public/.htaccess文件中的RewriteBase值应始终相同!如果这些值不同,您将遇到大量404错误。
对于控制台命令,此参数的值无关紧要。
db_host、db_user、db_pass、db_name、db_port
这5个选项是数据库凭据
db_host- 数据库的主机名(例如:localhost),db_port- 端口号(默认:3306),db_user- 数据库用户名,db_pass- 数据库用户密码,db_name- 数据库名。
HTTP操作
您可以在此处了解更多关于HTTP操作的信息。
控制台命令
您可以在此处了解更多关于控制台命令的信息。
数据库仓库
Kickstart利用了仓库模式,或多或少。当您想要从/到数据库获取或存储某些内容时,您会在仓库对象上调用适当的方法。
默认情况下,仓库类可以在src/Repository目录中找到(App\Repository命名空间)。所有利用数据库连接的仓库都扩展了Noctis\KickStart\Repository\AbstractDatabaseRepository抽象类,该类提供了一个名为$db的protected字段,代表数据库连接。
Kickstart利用了ParagonIE的EasyDB包来针对您选择的数据库引擎运行查询。EasyDB是PHP的PDO的一个简单包装,据我所知,它比PDI本身容易使用得多。如果您想了解更多关于为什么选择EasyDB而不是其他库的原因,请查看常见问题解答。
服务提供者
您可以在此处了解更多关于服务提供者的信息。
文件夹
您可以在此处了解更多关于项目目录中每个文件夹的信息。
更新
如果您需要更新应用程序的系统部分,即noctis/kickstart包,只需运行
$ composer update noctis/kickstart
由于更新基于Kickstart的项目并不像听起来那么简单,我将尽最大努力尽可能少地更新noctis/kickstart-app包(这个包)。当我发布它的新版本并且需要执行特定操作来更新应用程序部分时,你将在本项目的docs/upgrading文件夹中找到针对特定版本的指南。
我还将保持两个包之间的版本号一致。例如,当我修改noctis/kickstart包,并且这些修改与noctis/kickstart-app 2.x不兼容时,我将将其发布为前者的3.x版本,同时发布后者的更新版3.x。这样,使用composer update不会破坏你的Kickstart应用程序。
常见问题解答(FAQ)
有关Kickstart的附加问题和解答可以在FAQ中找到。