richardtmiles/carbonphp

一款PHP 8.1+工具包,包含RESTFUL ORM、套接字、会话管理和路由。

20.5.9 2024-06-20 18:15 UTC

This package is auto-updated.

Last update: 2024-09-19 22:30:18 UTC


README

PHP Version GitHub Release Packagist Version License Size Documentation CarbonPHP Feature Test Suit Monthly Downloads All Downloads Old Repository Location Downloads Star

欢迎来到CarbonPHP

我们的完整文档可在我们的GitHub Wiki或通过可运行的示例在Carbonorm.dev找到。

安装

composer require carbonorm/carbonphp

此命令将使用Composer安装CarbonPHP的最新版本。如果您还没有安装Composer,可以按照getcomposer.org上的说明进行安装。Composer是PHP的包管理器,使用CarbonPHP需要它。《a href="https://packagist.org.cn/packages/carbonorm/carbonphp" rel="nofollow noindex noopener external ugc">Packagist是Composer包的官方仓库,下载统计信息就是从这里收集的。旧的仓库位置composer require richardtmiles/carbonphp仍然可以通过composer/packagist工作,但建议迁移到新位置。上述的总下载量是重复的,以反映通过composer下载的两种方式。

Wordpress

或者,您还可以将CarbonPHP作为WordPress插件安装。这将允许您通过引导式用户界面使用CarbonPHP的功能。

CarbonPHP工具包和性能库

CarbonPHP已发展成为CarbonORM公共组织。在那里,您可以找到有关使用ORM的前端流程的文档。C6现在指任何以Carbon*前缀的CarbonORM包。

CarbonORM.dev

CarbonPHP通过PHPUnit测试+GitHub Actions已达到对其自身功能的稳定信任水平,但仍处于积极开发中。CarbonPHP正在生产环境中使用。任何尝试使用此代码的个人或团队都将通过GitHub上的问题和论坛获得支持。我们通常预计您可能遇到的任何问题都是小问题。如果您编辑代码库,请考虑将那些更改提交到GitHub!C6使用Semantic Versioning 2.0.0。一般来说:MAJOR版本当您进行不兼容的API更改时,MINOR版本当您以向后兼容的方式添加功能时,PATCH版本当您进行向后兼容的错误修复时。函数/类等的更改将在每次次要版本发布时的变更日志中列出。请仔细阅读变更日志或代码更改,并在更新时注意。请参阅carbonphp.com上的指南。

简介 - { MySQL ORM ∪ WebSockets ∪ $_SESSION管理 ∪ PDO数据库管理 }

CarbonPHP 是一个 PHP 8.2+ 库,用于简化自定义动态 Web 应用的构建。其主要目标是让 Web 应用运行得极快,性能和可扩展性是最高关注点。CarbonPHP 已经取得了令人印象深刻的统计数据,有时可以将小型服务器上 MySQL 高强度站点的流量翻倍。C6 可以作为你开发需求的独立骨干,也可以与其他流行框架(如 WordPressLaravel)协同工作。

CarbonPHP 的其他目标包括便携性;允许你的 Web 应用安装在具有不同操作系统的服务器上(支持 Windows、Mac 和 Linux)。提供完整的 MySQL ORM REST 生成器和围绕 MySQL 设计的 PHP 数据库工具。Windows PHP 目前缺少一个能够进行分叉的库。如果你的开发需要在 Windows 计算机上,请查看 WSL。我希望能够贡献一个用 C 编写的 PHP 库来支持这项任务,然而时间是一个因素。如果你愿意为此目标提供帮助,请通过 Richard@Miles.Systems 联系我。有关更多信息,请参阅 Carbonphp.com 的文档。对于生活在 Windows 之外的我们,C6 有一个用于标准使用和 WordPress 使用的 Websocket 库类。

快速开始

现有项目

composer require carbonorm/carbonphp

标准

C6 应遵循以下 PHP 标准推荐

PSR-4

PSR-12

SEMVAR

要求

CarbonPHP 目前需要 PHP 8.2 或更高版本。我们尽量与 PHP 的支持版本 保持同步。它使用返回类型对象记法,不应回迁到更早的 PHP 版本。CarbonPHP 将始终尝试与最新的 PHP 版本保持同步。建议使用 XCache 等代码缓存,因为与代码缓存配合使用时,Carbon 能够完全无需 stat() 调用。此外,建议使用 memcached 等内存缓存引擎(可选)。如果尚未支持 PHP8,C6 的首个向后兼容版本将提供支持。计划在 2022 年夏季删除 7.4。

文档

所有函数都应该在代码中包含 PHPDoc 风格的文档。《a href="https://carbonphp.com/" rel="nofollow noindex noopener external ugc">CarbonPHP.com 还提供了代码库的完整说明。请确保你的命名空间映射正确!";

RESTFUL ORM

CarbonPHP 的最大功能是 MySQL ORM。通过运行一个可定制的 CLI 命令,我们的程序将分析你的数据库模式并生成用于操作你的表的强大类。自动生成的文件可以与令人难以置信的 RESTFUL 语义结构一起使用。以下是使用 REST ORM 的示例。你可以 在这里查看生成的源代码

<?php

$id = Users::Post([
        Users::USER_TYPE => 'Athlete',
        Users::USER_IP => '127.0.0.1',
        Users::USER_SPORT => 'GOLF',
        Users::USER_EMAIL_CONFIRMED => 1,
        Users::USER_USERNAME => Config::ADMIN_USERNAME,
        Users::USER_PASSWORD => Config::ADMIN_PASSWORD,
        Users::USER_EMAIL => 'richard@miles.systems',
        Users::USER_FIRST_NAME => 'Richard',
        Users::USER_LAST_NAME => 'Miles',
        Users::USER_GENDER => 'Male'
    ]);

跨多个表连接。

Users::Get($user, $uid, [
    Users::SELECT => [
        Users::USER_USERNAME,
        Carbon_Locations::STATE
    ],
    Users::JOIN => [
        Users::INNER => [
            Carbon_Location_References::TABLE_NAME => [
                Users::USER_ID => Carbon_Location_References::ENTITY_REFERENCE
            ],
            Carbon_Locations::TABLE_NAME => [
                Carbon_Locations::ENTITY_ID => Carbon_Location_References::LOCATION_REFERENCE
            ]
        ]
    ],
    Users::PAGINATION => [
        Users::LIMIT => 1,
        Users::ORDER => [Users::USER_USERNAME => Users::ASC]
    ]
]);

从前端使用 ORM。此示例展示了多个表连接以及聚合函数(GROUP_CONCAT)的使用。

    const {axios} = this.props;

axios.get('/rest/' + C6.carbon_users.TABLE_NAME, {
    params: {
        [C6.SELECT]: [
            C6.carbon_users.USER_USERNAME,
            C6.carbon_users.USER_FIRST_NAME,
            C6.carbon_users.USER_LAST_NAME,
            C6.carbon_users.USER_ID,
            [C6.GROUP_CONCAT, C6.carbon_features.FEATURE_CODE],
            [C6.GROUP_CONCAT, C6.carbon_groups.GROUP_NAME]
        ],
        [C6.JOIN]: {
            [C6.LEFT]: {
                [C6.carbon_user_groups.TABLE_NAME]: [
                    C6.carbon_users.USER_ID,
                    C6.carbon_user_groups.USER_ID
                ],
                [C6.carbon_groups.TABLE_NAME]: [
                    C6.carbon_user_groups.GROUP_ID,
                    C6.carbon_groups.ENTITY_ID
                ],
                [C6.carbon_feature_group_references.TABLE_NAME]: [
                    C6.carbon_groups.ENTITY_ID,
                    C6.carbon_feature_group_references.GROUP_ENTITY_ID
                ],
                [C6.carbon_features.TABLE_NAME]: [
                    C6.carbon_features.FEATURE_ENTITY_ID,
                    C6.carbon_feature_group_references.FEATURE_ENTITY_ID
                ]
            }
        },
        [C6.PAGINATION]: {
            [C6.LIMIT]: 100
        }
    }
}).then(response => this.setState({users: (response.data.rest || [])}));

内置命令行界面

类似于 Laravel 的 artisan,任何从命令行调用 CarbonPHP 的文件都将执行 CLI 界面。我计划在 Beta 版本中实施用户命令系统。使用以下命令查看所有可用命令:

php index.php help

支持

CarbonPHP 的支持在 https://github.com/RichardTMiles/CarbonPHP 提供。

法律

使用 CarbonPHP 意味着同意其软件许可,可在 LICENSE 文件中找到。此许可可能会从版本到版本发生变化,因此请在升级到 C6 的新版本之前查看其许可。

致谢

CarbonPHP是由BDFL Richard Tyler Miles创建,并受到Tom Frost的 Hydrogen的启发。

贡献者可以在贡献者页面找到。

TODO - 加强Apache配置

https://gist.github.com/RichardTMiles/ae5718aff63ab4633457b6285c825aa2 这将在CarbonWordPress中使用,并在CarbonPHP中修改以供通用使用。