catpaw/core

CatPaw 核心库

0.4.1 2024-03-27 19:16 UTC

This package is auto-updated.

Last update: 2024-09-27 20:16:52 UTC


README

CatPaw 是一组围绕 catpaw/core 构建的库,它是一个为 amphp 构建的依赖注入库,该库大量使用 php 属性。

目录

入门

注意 与 composer 一起使用

composer create-project catpaw/starter
composer create-project catpaw/web-starter
composer 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,所有兼容的库都将始终具有相同的 majorminor 版本。
无论库是否实际上进行了任何主要或次要更改,其版本都会提升以匹配所有其他库,以表明给定库与最新功能兼容。

补丁号可能因库而异,但主号和次号应匹配。

例如,如果您正在使用 catpaw/core:^0.2 并想将 catpaw/web 添加到您的项目中,您应始终选择 catpaw/web:^0.2 以匹配您的核心版本。

为什么?

我是一个单独的开发者,这给了我更多的自由来添加功能而不会破坏旧版本,我喜欢这样组织我的项目。

需要一些例子吗?

您可以通过查看 https://github.com/tncrazvan/catpaw-examples/tree/master/srccatpaw/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,而第二个配置将启动当前打开的脚本。