0

具体来说,我真的不知道自己在做什么,但我试图从另一个文件中引用 $this 。

我正在使用 Wordpress(订阅 2 插件)并尝试从插件中订阅特定类别并将其放入我自己的注册表单中。

这样做的能力已经在插件的设置中,所以我想把它们放在我自己的形式中,但它们看起来像这样:

$this->get_usermeta_keyname('s2_subscribed')

所以我的问题:如何在我自己的文件中引用“$this”?我整个早上都在谷歌上搜索它,但我所有的结果都将“$this”视为“this”,并没有告诉我我想要什么。

4

1 回答 1

2

$this 指的是当前的类上下文。因此,如果您有一个名为 MyClass 的类,则可以在该类中使用 $this 访问函数和元素。在该类之外, $this 没有上下文并且不起作用,但是如果您已经实例化了该类并且函数或变量是公共的,那么您可以通过对该类的引用来访问它们。

例子:

<?php
Class MyClass {
    $class_var = "Class Var Value";
    function class_func_1() {
        print $this->class_var;
        $this->class_func_2();
    }

    function class_func_2() {
        print "Class Func 2";
    }
}
?>

所以上面的虚拟类使用 $this 来引用它自己的元素。但是在课堂之外,你不能用这个来引用它们。但是如果我们实例化一个类的实例,我们可以通过对类实例的引用来访问它们:

<?php
print $this->class_var;  // Fails miserably
$this->class_func_1();   // Also fails

$class_instance = new MyClass();
print $class_instance->class_var; // Var access works
$class_instance->class_func_1();  // Call method works
?>

由于这是一个 wordpress 功能,我很好奇您是否正在尝试访问插件(可能使用类)中的某些内容,或者可能是购买的主题中的某些内容。无论哪种方式,文件中的某处都应该有对类实例的引用。一旦你有了这个变量,你就可以访问类的动作和内容。

有了更多的信息,我想我们可能可以提供更好的方向......


更新:

好的,看来您正在使用 subscribe2 插件。在插件文件 ( subscribe2.php) 的底部是这一行:

$mysubscribe2 = new subscribe2();

这样做是创建一个指向类实例的全局变量。因此,$this->method_name()您可以使用$mysubscribe2->method_name().

但是,查看您发布的文件 - 看起来您几乎抓住了插件代码的一部分并将其放入模板中。我不确定您要完成什么,但从这里看来您正走在一条崎岖的道路上......

于 2013-01-03T20:25:50.557 回答