Skip to content

peridot-php/peridot-scope

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Peridot Scope

Build Status HHVM Status

Peridot Scope.

Scopes allow safe binding of state for closures and offers a mechanism for mixing state and behavior in via child scopes.

Extracted from the Peridot testing framework.

##Usage

We recommend installing this package via composer:

$ composer require peridot-php/peridot-scope:~1.0

###Creating a Scope

$scope = new Scope();
$scope->name = "Brian";

$fnWithName = function() {
    print $this->name;
};

$fnWithName = $scope->peridotBindTo($fnWithName);

$fnWithName(); //prints "Brian"

###Using the ScopeTrait

If an existing class can benefit from a Scope, you can use the ScopeTrait

class Test
{
    use ScopeTrait;
    
    protected $definition;
    
    public function __construct(callable $definition)
    {
        $this->definition = $definition; 
    }
    
    /**
     * Return the definition bound to a scope
     */
    public function getDefinition()
    {
        $scope = $this->getScope();
        return $scope->peridotBindTo($this->definition);
    }
}

##Mixins

You can mix behavior in via child scopes.

About

Scopes for function binding and mixins

Resources

License

Stars

Watchers

Forks

Packages

No packages published