camspiers/closureaccess

该软件包最新版本(0.3.1)没有可用的许可证信息。

为您的对象提供类似JavaScript的功能

0.3.1 2014-06-03 02:11 UTC

This package is auto-updated.

Last update: 2024-09-19 13:42:55 UTC


README

闭包访问特性以以下方式将类似JavaScript的功能引入您的对象

  • 对象上的公共方法可以像属性一样访问,例如 $obj->methodName
  • 添加到对象中的闭包可以像公共方法一样执行,例如 $obj->closureProp()

不保证您应该使用此库,它更多的是作为一个概念验证。

安装(使用composer)

composer require camspiers/closureaccess:dev-master

性能

  • 将公共方法作为属性访问,例如 $obj->methodName(返回闭包)
  • 慢约2.1倍
  • 添加到对象中的闭包可以像公共方法一样执行,例如 $obj->closureProp()
  • 慢约3.1倍

用法

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