aedart/util

This package is abandoned and no longer maintained. The author suggests using the aedart/athenaeum package instead.

This package contains a set of various utility resources, which can be used independently.

5.1.0 2018-09-12 18:45 UTC

This package is auto-updated.

Last update: 2019-02-20 19:40:57 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

Deprecated - Util

Package has been replaced by aedart/athenaeum

This package contains a set of various utility resources, which can be used independently.

Contents

How to install

composer require aedart/util

This package uses composer. If you do not know what that is or how it works, I recommend that you read a little about, before attempting to use this package.

Partial Collection

If you need to create a concrete collection, that contains specific elements only, then you might find the IPartialCollection interface and the PartialCollectionTrait useful.

Example

In this example, we create a concrete collection which can only contain integer values.

<?php
use \Aedart\Util\Contracts\Collections\PartialCollection;
use Aedart\Util\Traits\Collections\PartialCollectionTrait;

class MyCollection implements PartialCollection
{
    use PartialCollectionTrait;

    public function put($key, $value)
    {
        if(!is_int($value)){
            throw new \Exception(sprintf('Value must be of the type integer, %s given', var_export($value, true)));
        }

        $this->getInternalCollection()->put($key, $value);
    }
    
    public function populate(array $data = []) : void
    {
        // ... Implementation not shown here ...
    }
    
    public function offsetExists($offset)
    {
        // ... Implementation not shown here ...
    }
    
    public function offsetGet($offset)
    {
        // ... Implementation not shown here ...
    }
    
    public function offsetSet($offset, $value)
    {
        // ... Implementation not shown here ...
    }
    
    public function offsetUnset($offset)
    {
        // ... Implementation not shown here ...
    }
}

Behind the scenes

The PartialCollectionTrait uses a Illuminate\Support\Collection and provides internal access to it via the getInternalCollection() and setInternalCollection() methods.

In other words, you can choose to form your concrete collections as you see fit, and expose only those methods that you wish.

Contribution

Have you found a defect ( bug or design flaw ), or do you wish improvements? In the following sections, you might find some useful information on how you can help this project. In any case, I thank you for taking the time to help me improve this project's deliverables and overall quality.

Bug Report

If you are convinced that you have found a bug, then at the very least you should create a new issue. In that given issue, you should as a minimum describe the following;

  • Where is the defect located
  • A good, short and precise description of the defect (Why is it a defect)
  • How to replicate the defect
  • (A possible solution for how to resolve the defect)

When time permits it, I will review your issue and take action upon it.

Fork, code and send pull-request

A good and well written bug report can help me a lot. Nevertheless, if you can or wish to resolve the defect by yourself, here is how you can do so;

  • Fork this project
  • Create a new local development branch for the given defect-fix
  • Write your code / changes
  • Create executable test-cases (prove that your changes are solid!)
  • Commit and push your changes to your fork-repository
  • Send a pull-request with your changes
  • Drink a Beer - you earned it :)

As soon as I receive the pull-request (and have time for it), I will review your changes and merge them into this project. If not, I will inform you why I choose not to.

Acknowledgement

Versioning

This package follows Semantic Versioning 2.0.0

License

BSD-3-Clause, Read the LICENSE file included in this package