peridot-php/peridot-scope

Scopes for function binding and mixins

Maintainers

👁 brianium

Package info

github.com/peridot-php/peridot-scope

pkg:composer/peridot-php/peridot-scope

Statistics

Installs: 230 379

Dependents: 2

Suggesters: 0

Stars: 1

Open Issues: 0

1.3.0 2016-02-22 13:27 UTC

Requires

  • php: >=5.4.0

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT b5cc7ac35b2116d0f495b326218e7e93a823ab8e

  • Brian Scaturro <scaturrob.woop@gmail.com>

This package is not auto-updated.

Last update: 2026-06-07 00:34:07 UTC


README

👁 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.