如何将 THIS 绑定到 PHP 中的外部函数
how to bind THIS to an external function in php
我花了很多时间学习javascript。现在我来到了php世界,当我开始用php学习OOP时,一开始我感到有点迷茫。在javascript中,我可以绑定/应用/调用外部函数来完成一些特定的工作。如何在 php 中管理此行为?在这里,我有使用应用方法的简单JavaScript代码。我如何使用 php 做同样的事情。我知道阶级宣言是不同的。可变可见性也存在。我只想知道有没有办法模仿 php 中的绑定/应用/调用功能?
JS代码如下:
function Person(name,haircolor){
this.name=name;
this.haircolor=haircolor;
}
function display(){
console.log(this.name+' has '+this.haircolor+' hair.');
}
var person1=new Person('zami','black');
display.apply(person1);
调用时绑定是Javascript特有的一个特性(不是唯一的,而是很大程度上)。大多数其他语言在此之前不可逆地绑定对象上下文。在 PHP 中你能做的最好的事情显示在 Closure
类的手册中,匿名函数的内部实现:
class A {
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(); // 1
$cl = $cl->bindTo($ob2);
echo $cl(); // 2
不可能将函数/闭包绑定到任意对象;无论如何,您最多可以将其绑定到它所引用的同一类的其他实例。也可以通过 ReflectionMethod::invoke
.但同样,这真的不是PHP(以及大多数传统的OOP语言)的工作方式,你永远不应该出于好奇心以外的目的以这种方式编写代码。
this
和$this
只是另一个变量。他们唯一要做的就是隐式携带状态,而无需将它们传递给您调用的所有函数。在 PHP 中,它进一步有助于封装,因为$this
可以具有无法从类外部访问的值;甚至Javascript也不是这种情况。因此,没有必要以这种方式进行编程。任何你能用(理论)$foo->bar->apply($baz)
表达的东西,你都可以写$foo->bar($baz)
或bar($baz)
。
相关文章:
- HTML表单提交时未执行外部函数
- 从外部函数渲染后更改ReactJS类的状态
- 使用promise通过外部函数从DOM中检索属性
- 从内部函数javascript内部分配外部函数的对象
- JavaScript 变量使用外部函数
- 将外部函数返回的id传递给内部函数
- 使用ajax调用触发一个外部函数
- 内部函数不会为外部函数在 jQuery 中动态创建的元素赋值
- $location.search() 与外部函数一起使用,重置整个$scope.如何避免它
- 如何从许多内部非阻塞函数调用之一中提前退出外部函数
- Javascript,闭包中的返回函数如何与外部函数连接
- 从外部函数(数组)了解返回函数(x)
- Jquery:如何获取变量的局部外部函数
- 未调用的外部函数-javascript
- 如何将闭包从外部函数中提取出来,以便在不同的上下文中重用所述闭包
- 内部匿名函数如何具有外部函数的作用域
- 从外部函数获取参数名称
- javascript/google maps:为什么我在哪里初始化我的地图(内部与外部函数)很重要
- 如何将 THIS 绑定到 PHP 中的外部函数
- 如何在 javascript 中内部调用外部函数