Capsule allows to get/set a property thanks to the magic methods of PHP by defining the getter/setter of this property.
- Requires PHP 8.1+ (at least 8.1.14 recommended to avoid potential bugs).
- Requires Composer v2+ to manage PHP dependencies.
Install Capsule using Composer:
-
By adding the
sikessem/capsule
dependency to yourcomposer.json
file:{ "require" : { "sikessem/capsule": "^1.0" } }
-
Or by including the dependency:
composer require sikessem/capsule --no-dev
-
Define your custom capsule using Capsule's interface and traits:
<?php use Sikessem\Capsule\Interfaces\Accessible; use Sikessem\Capsule\Interfaces\Modifiable; use Sikessem\Capsule\Traits\Accessor; use Sikessem\Capsule\Traits\Modifier; class Capsule implements Accessible, Modifiable { use Accessor, Modifier; // The Capsule code... }
-
Or you can use Base Capsule or Base Getter/Setter:
<?php use Sikessem\Capsule\Bases\BaseCapsule; class Capsule extends BaseCapsule { // The Capsule code... }
<?php use Sikessem\Capsule\Bases\BaseGetter; class Getter extends BaseGetter { // The Getter code... }
<?php use Sikessem\Capsule\Bases\BaseSetter; class Setter extends BaseSetter { // The Setter code... }
-
Consider the Capsule below:
<?php namespace App; use Sikessem\Capsule\Interfaces\Accessible; use Sikessem\Capsule\Interfaces\Modifiable; use Sikessem\Capsule\Traits\Accessor; use Sikessem\Capsule\Traits\Modifier; class Capsule implements Accessible, Modifiable { use Accessor, Modifier; public function getName(): string { return 'capsule'; } protected mixed $value = null; public function setValue(mixed $value = null): void { if (isset($value)) { $this->value = $value; } else { unset($this->value); } } }
-
You can use the capsule as below:
<?php use App\Capsule; $capsule = new Capsule(); isset($capsule->name); // Returns true echo $capsule->name; // Prints "capsule" unset($capsule->name); // Does nothing isset($capsule->name); // Returns true $capsule->name = 'value'; // Throws an exception $capsule->value = 'value'; // Set value to "value" echo $capsule->value; // Prints "value" unset($capsule->value); // Remove the value isset($capsule->value); // Returns false
If you discover a security vulnerability within Capsule, please email SIGUI KessΓ© Emmanuel at ske@sikessem.com. All security vulnerabilities will be promptly addressed.
Capsule was developed by Sikessem.