-2

我一直在查看 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();

解析错误:语法错误,意外的 '(',期待 ',' 或 ';'

4

4 回答 4

1

如果它们是公共的,您可以访问类中所有设置的变量。如果它再次公开,您可以访问它的任何功能......这是示例。我有默认值'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();
    }
}
于 2012-11-01T14:21:25.350 回答
0

您目前不返回任何东西,您必须执行以下操作:

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 的实例:

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();
于 2012-11-01T14:06:26.653 回答
0

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

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

同样如下所述,您需要返回“果汁”。

return 'juice';
于 2012-11-01T14:07:40.100 回答
-3

我会让你尝试访问公共成员的变量

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();
于 2012-11-01T14:12:48.070 回答