我一直在查看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();
解析错误:语法错误,意外'(',期待','或';'
答案 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();