Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/symandy/resource

Set of reusable resource interfaces and traits
https://github.com/symandy/resource

php symfony

Last synced: 6 days ago
JSON representation

Set of reusable resource interfaces and traits

Awesome Lists containing this project

README

        

# Symandy Resource Components

This package is a set of reusable components and contains interfaces and traits that could be used in any PHP project.
It was mainly designed to be used for [Symfony](https://github.com/symfony/symfony) entities.

This package design was strongly inspired by [Sylius Resource Bundle](https://github.com/Sylius/SyliusResourceBundle)

## Installation

```shell
$ composer require symandy/resource
```

## Components
The components are stored in `Symandy\Component\Resource\Model` namespace.

Each interface have a corresponding trait and contains one or several attributes :

| Name (trait + interface) | Property | Methods |
|----------------------------------------------------|-------------|----------------------------------------------------------------------------------------|
| Resource | $id | getId() |
| Creatable | $createdAt | getCreatedAt()
setCreatedAt(?\DateTimeInterface)
create() |
| Updatable | $updatedAt | getUpdatedAt()
setUpdatedAt(?\DateTimeInterface)
update() |
| Timestampable
(extends Creatable & Updatable) | - | - |
| Archivable | $archivedAt | getArchivedAt()
setArchivedAt(?\DateTimeInterface)
archive()
restore() |
| Toggleable | $enabled | isEnabled()
setEnabled(bool)
enable()
disable() |
| CodeAware | $code | getCode()
setCode(?string) |
| SlugAware | $slug | getSlug()
setSlug(?string) |
| Versioned | $version | getVersion()
setVersion(?int) |
| Startable | $startsAt | getStartsAt()
setStartsAt(?\DateTimeInterface) |
| Endable | $endsAt | getEndsAt()
setEndsAt(?\DateTimeInterface) |
| PeriodAware
(extends Startable & Endable) | - | - |

## Usage

### Resource creation

The best way to use these components is to create a class and an interface for each resource.

It is also possible to create only the class and add the corresponding traits.

#### Example

```php
getId();
$post->enable();
$post->create();
# ...
```