drop-in-gaming / carbonphp
一个PHP 8.1+工具包,具有RESTFUL ORM、套接字、会话管理和路由功能。
Requires
- php: >=8.2
- ext-curl: *
- ext-fileinfo: *
- ext-json: *
- ext-openssl: *
- ext-pcntl: *
- ext-pdo: *
- ext-posix: *
- ext-readline: *
- ext-sockets: *
- ext-zip: *
- mustache/mustache: ^2.13.0
- psr/log: 1.1.4
Requires (Dev)
- phpmetrics/phpmetrics: >=2.7
- phpunit/phpunit: >=9.5
- phpunit/phpunit-selenium: >=9.0.1
- se/selenium-server-standalone: >=3.141.59
- wp-cli/wp-cli-bundle: >=2.6.0
README
更新 - 存储库位置变更
一些徽章是重复的,以展示Packagist上的真实统计数据。
新安装
composer require carbonorm/carbonphp
注意 - 旧位置composer require richardtmiles/carbonphp
应继续工作,但被认为是已弃用
CarbonPHP工具包和性能库
CarbonPHP已发展成为CarbonORM公共组织。在那里你可以找到关于使用ORM前端过程的文档。C6现在指的是任何Carbon*前缀的CarbonORM包。
CarbonPHP通过PHPUnit测试+GitHub Actions达到其自身特性的稳定信任水平,但仍处于积极开发中。CarbonPHP正在生产环境中使用。任何尝试使用此代码的人或团队都将在GitHub上通过问题和论坛获得支持。我们通常预计您可能遇到的任何问题都是微不足道的。如果您编辑代码库,请考虑在GitHub上提交这些更改!C6使用语义版本化2.0.0。一般来说:当您进行不兼容的API更改时,MAJOR版本;当您以前向后兼容的方式添加功能时,MINOR版本;当您进行向后兼容的错误修复时,PATCH版本。在每次次要版本发布时,将在Changelog中突出显示对功能/类等的更改。请仔细阅读更新日志或代码更改,以便在更新时。请参阅carbonphp.com上的指南。
简介 - 您梦寐以求的ORM & WordPress兼容性
CarbonPHP是一个PHP 7.4+库,用于简化自定义、动态Web应用程序的构建。其主要重点是使Web应用程序运行速度极快,性能和高度的可扩展性是绝对最高的关注点。CarbonPHP已经取得了令人印象深刻的统计数据,有时可以将处理MySQL密集型站点的服务器的流量翻倍。C6可以作为您开发需求的独立骨干,也可以与其他流行的框架(如WordPress或Laravel)结合使用。CarbonPHP的其他目标包括可移植性;允许您的Web应用程序安装在具有不同操作系统的服务器上(支持Windows、Mac和Linux)。完整的MySQL ORM REST生成器和围绕MySQL设计的php编写的数据库工具。Windows PHP目前缺乏能够进行分叉的库。如果您的开发需要Windows计算机,请查看Websocketd.com和文件名"./programs/Websocketd.php"。我已在上述存储库中编写了一些wiki,解释如何以这种方式使用套接字。我希望能够贡献一个用C(PHP是用C编写的)编写的PHP库来支持这项任务,然而时间是一个因素。如果您愿意帮助实现这个目标,请通过Richard@Miles.Systems与我联系。请参阅Carbonphp.com上的文档以获取更多信息。对于居住在Windows地狱之外的其他人,C6有一个用于标准使用和WordPress使用的WebSocket库类。
快速开始
现有项目
composer require carbonorm/carbonphp
标准
C6应遵循以下PHP标准建议。
要求
CarbonPHP目前需要PHP 8.2或更高版本。我们努力与PHP的支持版本保持同步。它使用返回类型对象符号,不应回迁到更早的PHP版本。CarbonPHP将始终努力与PHP的最新版本保持同步。强烈推荐使用XCache之类的指令缓存,因为与指令缓存搭配使用时,Carbon能够完全无需stat()调用。还推荐(但不是必需的)使用如memcached之类的RAM缓存引擎。如果尚未支持PHP 8,C6的第一个向后兼容版本将提供支持。计划于2022年夏季取消对7.4的支持。
文档
所有函数都应该在代码中使用PHPDoc风格的文档。CarbonPHP.com还提供了代码库的完整说明。请确保您的命名空间映射正确!
RESTful ORM
CarbonPHP最大的特性是MySQL ORM。通过运行可自定义的CLI命令,我们的程序将分析您的数据库模式并生成用于操作您的表的有效力类。自动生成的文件可以与令人愉悦的RESTful语义结构结合使用。下面是使用REST ORM的示例。您可以在此查看生成的源代码。
$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的启发。
贡献者可在GitHub贡献者列表中找到。
备注
常见的TSX类型
something: PropTypes.arrayOf(PropTypes.node)
****classes: PropTypes.object.isRequired,
message: PropTypes.node.isRequired,
要更新FED上的版本号
-
更新头部菜单
view/assets/react/src/components/HeaderTop/HeaderLinks.tsx 组件/HeaderTop/HeaderLinks.tsx
-
版本号
variables/carbonphp.jsx