在php中引用类函数变量

时间:2012-11-01 13:59:53

标签: php scope

我一直在查看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 个答案:

答案 0 :(得分: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();
    }
}

答案 1 :(得分: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();

答案 2 :(得分:0)

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

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

同样如下所示,您需要返回' juice'。

return 'juice';

答案 3 :(得分:-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();