Closure::bindTo

(PHP 5 >= 5.4.0, PHP 7)

Closure::bindTo ���Ƶ�ǰ�հ����󣬰�ָ����$this�������������

˵��

public Closure::bindTo ( object $newthis [, mixed $newscope = 'static' ] ) : Closure

����������һ�� ���������� ���뵱ǰ����ĺ�������ͬ������ͬ�������������԰󶨲�ͬ�Ķ���Ҳ���԰��µ���������

"�󶨵Ķ���"�����˺������е� $this ��ȡֵ��"��������"����һ�����͡���������������������ܹ�������Щ ˽�� �� ���� �ķ����� Ҳ����˵����ʱ $this ���Ե��õķ������� newscope ��ij�Ա��������ͬ�ġ�

��̬�հ������а󶨵Ķ��� newthis ������ֵӦ����Ϊ NULL��������Ȼ������ bubdTo �������ı����ǵ���������

This function will ensure that for a non-static closure, having a bound instance will imply being scoped and vice-versa. To this end, non-static closures that are given a scope but a NULL instance are made static and non-static non-scoped closures that are given a non-null instance are scoped to an unspecified class.

Note:

�����ֻ����Ҫ����һ������������������ cloning ���档

����

newthis

�󶨸�����������һ�����󣬻��� NULL ��ȡ���󶨡�

newscope

�����������������������򣬻��� 'static' ���ֵ�ǰ״̬�������һ��������ʹ��������������Ϊ�ĵ��������� �������󶨵Ķ���� ������˽�г�Ա �����Ŀɼ��ԡ�

����ֵ

�����´����� Closure ���� ������ʧ��ʱ���� FALSE

����

Example #1 Closure::bindTo() ʵ��

<?php

class {
    function 
__construct($val) {
        
$this->val $val;
    }
    function 
getClosure() {
        
//returns closure bound to this object and scope
        
return function() { return $this->val; };
    }
}

$ob1 = new A(1);
$ob2 = new A(2);

$cl $ob1->getClosure();
echo 
$cl(), "\n";
$cl $cl->bindTo($ob2);
echo 
$cl(), "\n";
?>

�������̵���������ڣ�

1
2

�μ�