2017 © Pedro Peláez
 

library macroable

A trait to dynamically add methods to a class

image

hoangphison/macroable

A trait to dynamically add methods to a class

  • Friday, November 24, 2017
  • by hoangphison
  • Repository
  • 0 Watchers
  • 0 Stars
  • 62 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 7 Forks
  • 0 Open issues
  • 4 Versions
  • 0 % Grown

The README.md

A trait to dynamically add methods to a class

Build Status StyleCI, (*1)

This package provides a trait that, when applied to a class, makes it possible to add methods to that class at runtime., (*2)

Here's a quick example:, (*3)

$myClass = new class() {
    use Spatie\Macroable\Macroable;
};

$myClass::macro('concatenate', function(... $strings) {
   return implode('-', $strings);
};

$myClass->concatenate('one', 'two', 'three'); // returns 'one-two-three'

The idea of a macroable trait and the implementation is taken from the macroable trait of the the Laravel framework., (*4)

Installation

You can install the package via composer:, (*5)

composer require hoangphison/macroable

Usage

You can add a new method to a class using macro:, (*6)

$macroableClass = new class() {
    use Spatie\Macroable\Macroable;
};

$macroableClass::macro('concatenate', function(... $strings) {
   return implode('-', $strings);
};

$myClass->concatenate('one', 'two', 'three'); // returns 'one-two-three'

Callables passed to the macro function will be bound to the class, (*7)

$macroableClass = new class() {

    protected $name = 'myName';

    use Spatie\Macroable\Macroable;
};

$macroableClass::macro('getName', function() {
   return $this->name;
};

$macroableClass->getName(); // returns 'myName'

You can also add multiple methods in one go my using a mixin class. A mixin class contains methods that return callables. Each method from the mixin will be registered on the macroable class., (*8)

$mixin = new class() {
    public function mixinMethod()
    {
       return function() {
          return 'mixinMethod';
       };
    }

    public function anotherMixinMethod()
    {
       return function() {
          return 'anotherMixinMethod';
       };
    }
};

$macroableClass->mixin($mixin);

$macroableClass->mixinMethod() // returns 'mixinMethod';

$macroableClass->anotherMixinMethod() // returns 'anotherMixinMethod';

Changelog

Please see CHANGELOG for more information what has changed recently., (*9)

Testing

bash composer test, (*10)

Contributing

Please see CONTRIBUTING for details., (*11)

Security

If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker., (*12)

Postcardware

You're free to use this package (it's MIT-licensed), but if it makes it to your production environment we highly appreciate you sending us a postcard from your hometown, mentioning which of our package(s) you are using., (*13)

Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium., (*14)

We publish all received postcards on our company website., (*15)

Credits

Idea and code is taken from the macroable trait of the the Laravel framework., (*16)

Support us

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*17)

Does your business depend on our contributions? Reach out and support us on Patreon. All pledges will be dedicated to allocating workforce on maintenance and new awesome stuff., (*18)

License

The MIT License (MIT). Please see License File for more information., (*19)

The Versions

24/11 2017

dev-master

9999999-dev https://github.com/hoangphison/macroable

A trait to dynamically add methods to a class

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

spatie macroable

24/11 2017

1.0.0

1.0.0.0 https://github.com/hoangphison/macroable

A trait to dynamically add methods to a class

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

spatie macroable

24/11 2017

dev-release/v1.0.0

dev-release/v1.0.0 https://github.com/hoangphison/macroable

A trait to dynamically add methods to a class

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

spatie macroable

24/11 2017

dev-feature/php5.6-compatibility

dev-feature/php5.6-compatibility https://github.com/hoangphison/macroable

A trait to dynamically add methods to a class

  Sources   Download

MIT

The Requires

  • php >=5.6

 

The Development Requires

spatie macroable