在php中引用类函数变量

在php中引用类函数变量,php,scope,Php,Scope,我一直在查看PHP变量范围参考页面,似乎找不到明确的答案。我正在使用这个基本模型,我想调用一个类函数,并在类之外访问它的所有变量。我也希望避免使用全局声明,并尽可能以最有效的方式进行 class my_class() { function my_class_function() { $my_class_function_variable = 'juice'; return $my_class_function_variable; } } $

我一直在查看PHP变量范围参考页面,似乎找不到明确的答案。我正在使用这个基本模型,我想调用一个类函数,并在类之外访问它的所有变量。我也希望避免使用全局声明,并尽可能以最有效的方式进行

class my_class() {
    function my_class_function() {
        $my_class_function_variable = 'juice';
            return $my_class_function_variable;
    }
}
$class_instance = new my_class();

function display_juice() {
    $class_instance::my_class_function();
    $my_class_function_variable;
}
我缺少的东西有没有快速的答案?我没有收到任何输出或错误

编辑

当我在类中而不是在函数中声明以下内容时,我得到了一个语法错误

public $current_user = wp_get_current_user();
分析错误:语法错误,意外的“(”,应为“,”或“;”


您当前没有返回任何内容,您必须执行以下操作:

class my_class() {
    function my_class_function() {
        $my_class_function_variable = 'juice';
        return $my_class_function_variable;
    }
}

function display_juice() {
    $class_instance = new my_class(); //Needs to be inside the function
    $my_class_function_variable = $class_instance->my_class_function();
    echo $my_class_function_variable;
}
display_juice();
如果要使用静态函数或变量,可以这样做,这样就无需创建my_类的实例:

class my_class() {
    static function my_class_function() {
        return 'juice';
    }
}

function display_juice() {
    $my_class_function_variable = my_class::my_class_function();
    echo $my_class_function_variable;
}
display_juice();

您需要将my_class_function()设置为静态,您可以使用my_class::my_class_function()调用它

正如下面建议的,您需要返回“果汁”

return 'juice';

我将使您尝试访问的变量成为公共成员

class my_class {
   public $my_class_function_variable = 'juice';
   public function my_class_function() {

   }
}
$class_instance = new my_class();

function display_juice() {
     echo my_class->$my_class_function_variable;
}

display_juice();

您可以访问类中所有设置的变量(如果它们是公共的)。 如果它再次公开,您可以访问它的任何功能。。。 这里是一个例子。我有默认值“mydefault”。 我使用它,然后我改变它,再使用它

class my_class {
    public $variable = "mydefault";

    public function change_variable($value) {
        $this->variable = $value;
    }
}

function display_juice() {
    $class = new my_class;
    echo $class->variable; // echo default value - 'mydefault'
    $class->change_variable('newvalue');    
    echo $class->variable; // echo default value - 'newvalue'
}

display_juice();
编辑

class my_class {
    public $variable;

    public function __construct() {
        $this->variable = wp_get_current_user();
    }
}

变量范围,请阅读所有相关内容…如果您想要一个类变量,请将其定义为公共类属性。错误太多了:静态调用、不返回、不是类成员、实例未传递给函数..哇..您的问题不完整且不清楚..请注意,在示例代码中,您不执行任何操作..1类(带有1个函数),第二个函数和一个$call_实例…我不知道您希望发生什么…顺便说一句,类的声明没有()…这不是一个function@Svetlio谢谢最后一点。我想从类函数中回显变量。这只是一个示例。我在类函数中定义了很多变量,我想从类外调用它们。请参阅我的编辑,我在将公共变量声明为全局WP函数时出错。您无法设置fu默认值的选项。添加1个构造函数来设置它..就像我的编辑..你能把条件放在_构造中吗?_构造是一个比其他所有函数都重要的函数..为什么不呢?我把构造名弄错了:)很抱歉,这看起来很奇怪,例如,如果你熟悉WP函数,有一个叫做get_post_meta($post->ID,'meta_key');如果我在u构造函数中声明,每个$post->ID的值都必须更改,因此我不确定为什么在调用类时设置变量。应该是在调用函数时,即display_juice,调用新变量,而不是在初始化时。