catpaw / core
CatPaw 核心库
Requires
- php: ^8.1
- ext-openssl: *
- ext-zlib: *
- amphp/amp: ^2.6
- amphp/file: ^2.0
- amphp/log: ^1.1
- amphp/process: ^1.1
- erusev/parsedown: ^1.7
- vlucas/phpdotenv: ^5.4
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.8
- phpunit/phpunit: ^9
README
CatPaw 是一组围绕 catpaw/core
构建的库,它是一个为 amphp 构建的依赖注入库,该库大量使用 php 属性。
目录
入门
注意 与 composer 一起使用
composer create-project catpaw/startercomposer create-project catpaw/web-startercomposer create-project catpaw/markdown-starter
前提
本项目旨在针对 Linux 发行版,一些功能可能在 Windows 或 MacOS 上可能无法正常工作。
欢迎为特定平台修复问题的贡献。
入门
为了开始,您需要 php 8.1 或更高版本。
您需要做的所有事情是使用入门模板创建一个新的项目。
composer create-project catpaw/starter
或者,您也可以从 https://github.com/tncrazvan/catpaw-starter 克隆模板
每个应用程序都必须在全局范围内声明一个 main
函数,它将是您的入口点
<?php // src/main.php function main(){ echo "hello world\n"; }
创建您的新项目后,您可以使用以下命令运行它
composer watch
来监视文件更改(在开发中很有用)或
composer start
用于生产模式。
构建 & 运行
您可以使用以下命令将应用程序构建为单个 .phar
文件,但这不是必需的
composer build
构建过程可以在 build.yml
文件中进行配置。
构建您的应用程序后,您只需使用以下命令即可运行它
php dist/app.phar
默认情况下,生成的 .phar
文件包括以下目录
./src
./vendor
./resources
./bin
./.build-cache
(在编译时创建)
这意味着它是一个便携式二进制文件,您只需确保在要运行的机器上安装了 php 即可。
关于版本号的说明
给定版本字符串 major.minor.patch
,所有兼容的库都将始终具有相同的 major
和 minor
版本。
无论库是否实际上进行了任何主要或次要更改,其版本都会提升以匹配所有其他库,以表明给定库与最新功能兼容。
补丁号可能因库而异,但主号和次号应匹配。
例如,如果您正在使用 catpaw/core:^0.2
并想将 catpaw/web
添加到您的项目中,您应始终选择 catpaw/web:^0.2
以匹配您的核心版本。
为什么?
我是一个单独的开发者,这给了我更多的自由来添加功能而不会破坏旧版本,我喜欢这样组织我的项目。
需要一些例子吗?
您可以通过查看 https://github.com/tncrazvan/catpaw-examples/tree/master/src 中 catpaw/examples
存储库提供的示例来跟进。
使用 VSCode 调试
为了使用 VSCode 进行调试,您需要配置 VSCode 和 xdebug (3.x)。
VSCode 的 XDebug 3.x 配置
在您的 php.ini
文件中添加
[xdebug] xdebug.client_host=127.0.0.1 xdebug.client_port=9003
VSCode 配置
在您的项目中创建一个新的 ./.vscode/launch.json
文件,并添加以下配置(如果您还没有的话)
{ "version": "0.2.0", "configurations": [ { "name": "Listen (paw)", "type": "php", "request": "launch", "port": 9003 }, { "name": "main (paw)", "type": "php", "request": "launch", "program": "${workspaceFolder}/bin/start", "cwd": "${workspaceFolder}", "args": [ "--libraries='./src/lib/'", "--entry='./src/main.php'" ], "runtimeArgs": [ "-dxdebug.start_with_request=yes", "-dxdebug.mode=debug" ], "env": { "XDEBUG_MODE": "debug", "XDEBUG_CONFIG": "client_port=${port}" } } ] }
第一个配置将被动监听 xdebug,而第二个配置将启动当前打开的脚本。