Skip to content

πŸ“¦οΈ Encapsulate PHP Class properties using dynamic Getter and Setter.

License

Notifications You must be signed in to change notification settings

bridgetphp/container

Folders and files

NameName
Last commit message
Last commit date

Latest commit

cb911e3 Β· Jan 7, 2023

History

25 Commits
Jan 5, 2023
Jan 7, 2023
Jan 7, 2023
Dec 24, 2022
Dec 24, 2022
Aug 15, 2022
Dec 26, 2022
Jan 7, 2023
Jan 5, 2023
Dec 24, 2022
Dec 24, 2022
Dec 24, 2022
Jan 5, 2023

Repository files navigation

Sikessem logo
Capsule Capsule is released under the MIT license. GitHub Workflow Status (main) Total Downloads Latest Version PRs welcome! Follow @sikessem_tweets

Get/set PHP class properties dynamically

Capsule allows to get/set a property thanks to the magic methods of PHP by defining the getter/setter of this property.

πŸ”– Contents

πŸ“‹ Requirements

  • Requires PHP 8.1+ (at least 8.1.14 recommended to avoid potential bugs).
  • Requires Composer v2+ to manage PHP dependencies.

⚑️ Installation

Install Capsule using Composer:

  • By adding the sikessem/capsule dependency to your composer.json file:

    {
        "require" : {
            "sikessem/capsule": "^1.0"
        }
    }
  • Or by including the dependency:

    composer require sikessem/capsule --no-dev

πŸ§‘β€πŸ’» Usage

  • 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...
    }
  1. 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);
            }
            
        }
    }
  2. 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

πŸ” Security Reports

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.