sikessem / capsule
Capsule 旨在简化依赖项和对象的托管,同时提高封装性和确保代码质量。
v0.5.2
2023-06-22 15:47 UTC
Requires
- php: ^8.1||^8.2
- psr/container: ^2.0
Requires (Dev)
- sikessem/devtools: ^0.0.0
README
高效的依赖注入和封装器
Capsule 是一个库,它使用容器以有组织且集中的方式管理依赖项和对象,从而便于封装。
警告
此包不再维护。请使用 sikessem/core 代替。
🔖 内容
📋 要求
- 需要 PHP 8.1+(建议至少 8.1.14 以避免潜在错误)。
- 需要 Composer v2+ 来管理 PHP 依赖项。
⚡️ 安装
-
通过将
sikessem/capsule
依赖项添加到您的composer.json
文件中{ "require" : { "sikessem/capsule": "^0.5" } }
-
或者通过包含依赖项
composer require sikessem/capsule --no-dev
🧑💻 使用
-
使用 Capsule 的接口和特性定义您的自定义组件
<?php namespace Sikessem\Capsule\Sample; use Sikessem\Capsule\Core\IsEncapsulated; interface CustomInterface extends IsEncapsulated { public function getName(): string; public function setName(string $name): void; }
<?php namespace Sikessem\Capsule\Sample; final class CustomClass implements CustomInterface { use CustomTrait; public function __construct(string $name = 'World') { $this->setName($name); } }
<?php namespace Sikessem\Capsule\Sample; use Sikessem\Capsule\Core\HasEncapsulator; trait CustomTrait { use HasEncapsulator; protected string $name; public function getName(): string { return $this->name; } public function setName(string $name): void { $this->name = $name; } }
-
您可以使用组件如下
<?php use Sikessem\Capsule\Sample\CustomClass; $capsule = new CustomClass('Sikessem'); isset($capsule->name); // Returns true echo $capsule->name; // Prints "Sikessem" unset($capsule->name); // Does nothing isset($capsule->name); // Returns true $capsule->value = 'value'; // Throws an exception $capsule->name = 'value'; // Set name to "value" echo $capsule->name; // Prints "value" $capsule->on('hello', function (?string $name = null) { return 'Hello '.($name ?? 'Sikessem').'!'; }); echo $capsule->hello(); //Prints "Hello Sikessem!"
👏 贡献
此存储库的主要目的是继续发展 Sikessem。我们希望尽可能简化并提高透明度以贡献于此项目,并对社区贡献的错误修复和改进表示感谢。请阅读以下内容,了解您如何参与改进 Sikessem。
行为准则
Sikessem 采用了行为准则,我们希望项目参与者遵守。请阅读 全文 以了解哪些行为将被容忍,哪些行为不会被容忍。
👥 贡献指南
阅读我们的 贡献指南 了解我们的开发流程、如何提出错误修复和改进以及如何构建和测试您的 Sikessem 修改。
🔒️ 初学者友好问题
我们有一份包含相对有限范围的错误的 初学者友好问题 列表。这是一个开始、获得经验并熟悉我们贡献流程的好地方。
💬 讨论区
更大规模的讨论和提议在 sikessem/community 中进行。
🔐 安全报告
如果您在 Sikessem 中发现安全漏洞,请发送电子邮件至 SIGUI Kessé Emmanuel,邮箱地址为 contact@sigui.ci。所有安全漏洞都将得到及时处理。
由 Sikessem 用 ❤︎ 制作。