这是做什么的:$ this-> var1 = function($ var2);?

时间:2011-05-29 01:32:45

标签: php oop

我正在学习OOP PHP。我已经完全掌握了亲子阶级的关系,并且彼此互动,所以在这方面都很好。

这行代码虽然令我困惑,但我不确定它的作用:

$this->var1 = function($var2);

可以让您更清楚地了解代码的信息:它是位于类的构造函数内的一行,var1在上面被声明为private。要调用的函数位于类外部,但位于同一文件中。

我知道它本质上在传递$ var2时调用当前类的函数。但是“var1 =”部分到底是做什么的呢?为什么美元符号不包括在内?

语法有效,因为我正在查看其他人的代码,它会产生所需的结果。我只是想学习它以供将来参考。

提前谢谢。

NOLO

5 个答案:

答案 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

等魔术方法一起声明或使用

检查一下以获取魔术方法的参考

http://php.net/manual/en/language.oop5.magic.php

答案 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)的结果。