Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在课外使用$this?_Php_Class_Object - Fatal编程技术网

Php 如何在课外使用$this?

Php 如何在课外使用$this?,php,class,object,Php,Class,Object,我们可以在课外使用$this。请看下面的例子 <?php class Animal { public function whichClass() { echo "I am an Animal!"; } public function sayClassName() { $this->whichClass(); } } class Tiger extends Animal { public functio

我们可以在课外使用
$this
。请看下面的例子

<?php 

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

//Tiger::whichClass();

$this->anotherClass();

$这是不可能在类外使用的,所以您可以创建静态方法,并像Tiger::anotherClass这样使用。链接到


$this不可能在类外使用,所以您可以创建静态方法,并像Tiger::anotherClass那样使用。链接到


$this不可能在类外使用,所以您可以创建静态方法,并像Tiger::anotherClass那样使用。链接到


$this不可能在类外使用,所以您可以创建静态方法,并像Tiger::anotherClass那样使用。链接到


以这种方式使用$this是不可能的,您可以创建该类的对象,然后扩展要调用的方法。见下文

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

echo $tigerObj->anotherClass();

您将得到结果“我是另一只老虎!”

这样使用$this是不可能的,您可以创建该类的对象,然后扩展要调用的方法。见下文

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

echo $tigerObj->anotherClass();

您将得到结果“我是另一只老虎!”

这样使用$this是不可能的,您可以创建该类的对象,然后扩展要调用的方法。见下文

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

echo $tigerObj->anotherClass();

您将得到结果“我是另一只老虎!”

这样使用$this是不可能的,您可以创建该类的对象,然后扩展要调用的方法。见下文

class Animal {

    public function whichClass() {
        echo "I am an Animal!";
    }

    public function sayClassName() {
        $this->whichClass();
    }
}

class Tiger extends Animal {

    public function whichClass() {
        echo "I am a Tiger!";
    }

    public function anotherClass() {
        echo "I am a another Tiger!";
    }

}

$tigerObj = new Tiger();

echo $tigerObj->anotherClass();

您将得到结果“我是另一只老虎!”

不,您不能在类的范围之外使用$this

例如:

1    $this=new \DateTime();
2    echo $this->format('r');
生成以下错误:


致命错误:无法在第2行重新分配$this
不您不能在类的范围之外使用$this

例如:

1    $this=new \DateTime();
2    echo $this->format('r');
生成以下错误:


致命错误:无法在第2行重新分配$this
不您不能在类的范围之外使用$this

例如:

1    $this=new \DateTime();
2    echo $this->format('r');
生成以下错误:


致命错误:无法在第2行重新分配$this
不您不能在类的范围之外使用$this

例如:

1    $this=new \DateTime();
2    echo $this->format('r');
生成以下错误:



致命错误:无法在第2行重新分配$this

使用
$tigerObj->anotherClass()
代替。如果在您尝试使用
$this
后它抛出错误,那么它肯定意味着您无法在类外使用$this,并且无论您提出多少问题或提供多少示例,您都无法这样做。时期这是有原因的,而且这样做也没有任何意义。”
$此
指的是当前对象”-是的,但不是指您似乎正在考虑它的意义。这不是“我上次使用的对象”,而是“调用此方法的对象”。因此,如果您不在成员函数的作用域内,则没有
$this
。在您的示例中,您处于全局范围内,因此没有可用的对象。(实际上,$这是一种神奇的变量,它提供了一个指向单个对象的成员变量的指针,在对象范围之外引用它是没有意义的。)您想要实现什么?你所要求的毫无意义
$this
始终指向所使用类的当前
实例。因此,要从外部引用类的
实例
,您需要使用
tigerObj
来执行此操作。模板文件包含在类的成员函数中。请参阅-基本上,因为模板文件包含在Magento的块对象的方法中,
$this
对它们可用,并引用执行包含操作的块对象。请使用
$tigerObj->anotherClass()
代替。如果在尝试使用
$this
后它会抛出错误,那么它肯定意味着你不能在课外使用$this,不管你问多少问题或提供多少例子,你都不能这样做。时期这是有原因的,而且这样做也没有任何意义。”
$此
指的是当前对象”-是的,但不是指您似乎正在考虑它的意义。这不是“我上次使用的对象”,而是“调用此方法的对象”。因此,如果您不在成员函数的作用域内,则没有
$this
。在您的示例中,您处于全局范围内,因此没有可用的对象。(实际上,$这是一种神奇的变量,它提供了一个指向单个对象的成员变量的指针,在对象范围之外引用它是没有意义的。)您想要实现什么?你所要求的毫无意义
$this
始终指向所使用类的当前
实例。因此,要从外部引用类的
实例
,您需要使用
tigerObj
来执行此操作。模板文件包含在类的成员函数中。请参阅-基本上,因为模板文件包含在Magento的块对象的方法中,
$this
对它们可用,并引用执行包含操作的块对象。请使用
$tigerObj->anotherClass()
代替。如果在尝试使用
$this
后它会抛出错误,那么它肯定意味着你不能在课外使用$this,不管你问多少问题或提供多少例子,你都不能这样做。时期这是有原因的,而且这样做也没有任何意义。”
$此
指的是当前对象”-是的,但不是指您似乎正在考虑它的意义。这不是“我上次使用的对象”,而是“调用此方法的对象”。因此,如果您不在成员f的范围内