我正在学习OOP PHP。我已经完全掌握了亲子阶级的关系,并且彼此互动,所以在这方面都很好。
这行代码虽然令我困惑,但我不确定它的作用:
$this->var1 = function($var2);
可以让您更清楚地了解代码的信息:它是位于类的构造函数内的一行,var1在上面被声明为private。要调用的函数位于类外部,但位于同一文件中。
我知道它本质上在传递$ var2时调用当前类的函数。但是“var1 =”部分到底是做什么的呢?为什么美元符号不包括在内?
语法有效,因为我正在查看其他人的代码,它会产生所需的结果。我只是想学习它以供将来参考。
提前谢谢。
NOLO
答案 0 :(得分:1)
它将对象var1
的{{1}}字段设置为函数返回的值。需要美元符号才能解析$this
(对象),this
告诉php找到该对象的->var1
字段,因此不需要var1
。< / p>
答案 1 :(得分:0)
假设function
实际上是函数的名称,而不是定义某个函数,它会在当前类实例(即var1
是)上设置属性$this
yourFunction($var2)
;
例如:
class MyClass {
public $id;
function updateId($newid) {
$this->id=$newid;
}
}
$test=new MyClass();
$test->updateId(50);
echo $test->id;
此脚本的输出为50
。
通过调用updateId()
函数,该类更新其自己的内部变量id
。
答案 2 :(得分:0)
它将函数($ var2)的结果存储在$ var1。
中在程序php中,同样是$var1 = nameOfFuction($var2);
在类中,不直接访问变量。相反,语法变为:
$this->
表示您正在访问当前类的属性(变量)。 var1是属性的名称。
创建类时,将调用构造函数方法(类中的函数),并使用nameOfFuction($ var2)的结果自动填充var1。
当一个属性是“私有”时,意味着它不能从类外部调用,这意味着它只能在类中使用,并且可能通过公共方法访问。
答案 3 :(得分:0)
$this
指的是当前的类实例和
$this->var1
本质上是指此类实例的变量/ property $ var1(通常与__get或__set
等魔术方法一起声明或使用检查一下以获取魔术方法的参考
答案 4 :(得分:0)
在PHP中定义类时,您可以提供类实例变量以及函数变量:
class Foo
{
public $bar = 'bar';
public function __construct($bar)
{
echo $bar; //this line will echo 'baz'
echo $this->bar; //this line will echo 'bar';
}
}
$foo = new Foo('baz');
要访问类实例的属性,您需要使用该对象作为参考。在外部它将是:
$foo->bar = 'fizz';
而在内部则是:
$this->bar = 'buzz';
总而言之,构造函数中的行将$obj->var1
的值设置为function($var2)
的结果。