camspiers/closureaccess

There is no license information available for the latest version (0.3.1) of this package.

Brings JavaScript-like functionality to your objects

Maintainers

👁 camspiers

Package info

github.com/camspiers/closureaccess

pkg:composer/camspiers/closureaccess

Statistics

Installs: 19

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

0.3.1 2014-06-03 02:11 UTC

Requires

None

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

Unknown License 289745446e32517b866b18c6050398a1de21e11d

  • Cam Spiers <camspiers.woop@gmail.com>

This package is auto-updated.

Last update: 2026-06-19 17:29:39 UTC


README

The closure access trait brings JavaScript-like functionality to your objects in the following ways:

  • Public methods on objects can be accessed as properties e.g. $obj->methodName
  • Closures added to objects can be executed like public methods e.g. $obj->closureProp()

No claims are made as to whether you should use this library, it is provided more as a proof of concept.

Installation (with composer)

composer require camspiers/closureaccess:dev-master

Performance

  • Accessing public methods as properties e.g. $obj->methodName (return Closure)
  • ~2.1x slower
  • Closures added to objects can be executed like public methods e.g. $obj->closureProp()
  • ~3.1x slower

Usage

class A {
 use Camspiers\ClosureAccess;
 public function hello()
 {
 return "Hello";
 }
}

function run($fn) {
 return $fn();
}

$a = new A;

// an example of accessing a public method via properties and passing it around
echo run($a->hello), ', World';

// an example of executing a closure property as a method
$a->world = function () {
 return "World";
};

echo 'Hello, ', $a->world();