Scopes for function binding and mixins

1.3.0 2016-02-22 13:27 UTC

This package is not auto-updated.

Last update: 2024-04-13 13:36:14 UTC


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.


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);


You can mix behavior in via child scopes.