Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sikessem/capsule

πŸ“¦οΈ Encapsulate PHP Class properties using dynamic Getter and Setter.
https://github.com/sikessem/capsule

accessible-properties capsule encapsulation getter modifiable-properties php property-accessor property-modifer setter sikessem

Last synced: about 1 month ago
JSON representation

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

Awesome Lists containing this project

README

        

[![sikessem-logo]][sikessem-link]


[![php-icon]][php-link]
[![packagist-version-icon]][packagist-version-link]
[![packagist-download-icon]][packagist-download-link]
[![license-icon]][license-link]
[![actions-icon]][actions-link]
[![pr-icon]][pr-link]
[![twitter-icon]][twitter-link]

[sikessem-logo]: https://github.com/sikessem/art/blob/HEAD/images/sikessem.svg
[sikessem-link]: https://github.com/sikessem "Sikessem"

[actions-icon]: https://github.com/sikessem/capsule/workflows/Tests/badge.svg
[actions-link]: https://github.com/sikessem/capsule/actions "Capsule status"

[php-icon]: https://img.shields.io/badge/PHP-ccc.svg?style=flat&logo=php
[php-link]: https://github.com/sikessem/capsule/search?l=php "PHP code"

[packagist-version-icon]: https://img.shields.io/packagist/v/sikessem/capsule
[packagist-version-link]: https://packagist.org/packages/sikessem/capsule "Capsule Releases"

[packagist-download-icon]: https://img.shields.io/packagist/dt/sikessem/capsule
[packagist-download-link]: https://packagist.org/packages/sikessem/capsule "Capsule Downloads"

[pr-icon]: https://img.shields.io/badge/PRs-welcome-brightgreen.svg?color=brightgreen
[pr-link]: [contrib-link] "PRs welcome!"

[twitter-icon]: https://img.shields.io/twitter/follow/sikessem_tweets.svg?label=@Sikessem_tweets
[twitter-link]: https://twitter.com/intent/follow?screen_name=sikessem_tweets "Ping Sikessem"

[license-icon]: https://img.shields.io/badge/license-MIT-blue.svg
[license-link]: https://github.com/sikessem/capsule/blob/HEAD/LICENSE "Capsule License"
[conduct-link]: https://github.com/sikessem/capsule/blob/HEAD/CODE_OF_CONDUCT.md
[contrib-link]: https://github.com/sikessem/capsule/blob/HEAD/CONTRIBUTING.md
[discuss-link]: https://github.com/sikessem/community/discussions

***

# An Efficient Dependency Injector and Encapsulator

Capsule is a library that uses a Container to manage dependencies and objects in an organized and centralized way, thus facilitating encapsulation.

> [!WARNING]
> This package is no longer maintained.
Please use [sikessem/core](https://github.com/sikessem/core) instead.

## πŸ”– Contents

- [An Efficient Dependency Injector and Encapsulator](#an-efficient-dependency-injector-and-encapsulator)
- [πŸ”– Contents](#-contents)
- [πŸ“‹ Requirements](#-requirements)
- [⚑️ Installation](#️-installation)
- [πŸ§‘β€πŸ’» Usage](#-usage)
- [πŸ‘ Contribution](#-contribution)
- [Code of Conduct](#code-of-conduct)
- [πŸ‘₯ Contributing Guide](#-contributing-guide)
- [πŸ”’οΈ Good First Issues](#️-good-first-issues)
- [πŸ’¬ Discussions](#-discussions)
- [πŸ” Security Reports](#-security-reports)

## πŸ“‹ Requirements

> - **Requires [PHP 8.1+](https://php.net/releases/)** (at least 8.1.14 recommended to avoid potential bugs).
> - **Requires [Composer v2+](https://getcomposer.org/)** to manage PHP dependencies.

## ⚑️ Installation

Install [Capsule](https://packagist.org/packages/sikessem/capsule) using [Composer](https://getcomposer.org/):

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

```json
{
"require" : {
"sikessem/capsule": "^0.5"
}
}
```

- Or by including the dependency:

```bash
composer require sikessem/capsule --no-dev
```

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

1. Define your custom components using Capsule's interfaces and traits:

```php
setName($name);
}
}
```

```php
name;
}

public function setName(string $name): void
{
$this->name = $name;
}
}
```

2. You can use your components as below:

```php
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!"
```

## πŸ‘ Contribution

The main purpose of this repository is to continue evolving Sikessem. We want to make contributing to this project as easy and transparent as possible, and we are grateful to the community for contributing bug fixes and improvements. Read below to learn how you can take part in improving Sikessem.

### [Code of Conduct][conduct-link]

Sikessem has adopted a Code of Conduct that we expect project participants to adhere to.
Please read the [full text][conduct-link] so that you can understand what actions will and will not be tolerated.

### πŸ‘₯ [Contributing Guide][contrib-link]

Read our [**Contributing Guide**][contrib-link] to learn about our development process, how to propose bugfixes and improvements, and how to build and test your changes to Sikessem.

### πŸ”’οΈ Good First Issues

We have a list of [good first issues][gfi] that contain bugs which have a relatively limited scope. This is a great place to get started, gain experience, and get familiar with our contribution process.

[gfi]: https://github.com/sikessem/capsule/labels/good%20first%20issue

### πŸ’¬ Discussions

Larger discussions and proposals are discussed in [**sikessem/community**][discuss-link].

## πŸ” Security Reports

If you discover a security vulnerability within [Sikessem](https://sikessem.com), please email [SIGUI KessΓ© Emmanuel](https://github.com/siguici) at [[email protected]](mailto:[email protected]). All security vulnerabilities will be promptly addressed.

***

Made with ❀︎ by Sikessem.