-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

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 に答える
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 に答える
-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 に答える