2017 © Pedro Peláez
 

package attribute-manipulation

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

image

larapack/attribute-manipulation

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

  • Monday, November 30, 2015
  • by marktopper
  • Repository
  • 1 Watchers
  • 2 Stars
  • 33 Installations
  • PHP
  • 2 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

attribute-manipulation

Allows multiple traits to manipulate with the attributes of an Eloquent Model., (*1)

Installing

Install using Composer composer require larapack/attribute-manipulation 1.*., (*2)

Why?

Some traits might want to manipulate with attributes of an Eloquent Model, this can however be done easy creating the getAttribute-method and/or setAttribute-method. However if multiple traits uses those methods then they will complain about eachother since it is only allow for a class to use one trait with the same method. So if you are up to having a multiple traits using the same methods to manipulate the Eloquent Model attributes then you might use our methods instead for better support., (*3)

Trait setup

Here is how a trait using our methods should look like:, (*4)

<?php

namespace Vendor\Package;

use Exception;
use Larapack\AttributeManipulation\Manipulateable;

trait ExampleTrait
{
    /**
     * Boot the ExampleTrait trait for a model.
     * @return void
     */
    public static function bootExampleTrait()
    {
        // first we will check if the model uses the Manipulateable trait, if not we will throw them an friendly error
        if (!isset(class_uses(get_called_class())[Manipulateable::class])) {
            throw new Exception(sprintf('You must use the '.Manipulateable::class.' trait in %s to use the ExampleTrait trait.', get_called_class()));
        }

        // then we will set our manipulator for the attribute setter
        static::addSetterManipulator(function($model, $key, $value) {
            // here we have both the model object ($model), attribute key ($key) and the current value to set ($value).
            // whatever we return is that value that will be sent to the next manipulator 
            // or if none then it will set set to the model object.
            // For this example we will return the encrypted value.
            // Example: $model->password = 'secret' will be saved as the encrypted value of `secret`.
            // For the real encryptable trait which this example is based on please view https://github.com/larapack/attribute-encryption
            return \Crypt::encrypt($value);
        });

        // then we will set our manipulator for the attribute getter
        static::addGetterManipulator(function($model, $key, $value) {
            // here we have both the model object ($model), attribute key ($key) and the current value to set ($value).
            // whatever we return is that value that will be sent to the next manipulator 
            // or if none then it will returned to the output.
            // For this example we will return the decrypted value.
            // Example: echo $model->password will output the decrypted value of `password`.
            // For the real encryptable trait which this example is based on please view https://github.com/larapack/attribute-encryption
            return \Crypt::decrypt($value);
        });
    }
}

Example model:, (*5)

<?php

namespace App;

use Larapack\AttributeManipulation\Manipulateable;
use Vendor\Package\ExampleTrait;

class User
{
    use Manipulateable;
    use ExampleTrait;

    //...
}

Example test:, (*6)

$user = new App\User;
$user->password = 'secret';
dump($user); // here you will see that the password is encrypted
echo $user->password; // this will output the decrypted password

The Versions

30/11 2015

dev-master

9999999-dev

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

  Sources   Download

MIT

laravel package larapack

30/11 2015

1.0.x-dev

1.0.9999999.9999999-dev

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

  Sources   Download

MIT

laravel package larapack

30/11 2015

dev-develop

dev-develop

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

  Sources   Download

MIT

laravel package larapack

27/11 2015

v1.0.0

1.0.0.0

Allows multiple traits to manipulate with the attributes of an Eloquent Model.

  Sources   Download

MIT

laravel package larapack