PHP の同じクラスが別の関数の変数を読み取る

WBOY
リリース: 2016-06-20 12:37:16
オリジナル
1470 人が閲覧しました

同じクラス内で、関数 A で関数 B の変数値を呼び出すにはどうすればよいですか?


ディスカッション (解決策) への返信

不可!
マニュアルの変数のスコープの説明をよく読んでください

B の変数は、定義時にグローバル変数として設定することも、他の方法を使用して A に値を返すこともできます

同じクラスで実装する場合、このクラスの属性として変数のみ使用できます

同じクラスで実装する場合、このクラスの属性として変数のみ使用できますこのクラス



例えば、Bの値をAで使いたい場合はどうすればよいでしょうか?

いいえ、範囲は限られています。

これを読みたい場合は、クラスのグローバル変数として設定できます。

クラスで属性 $c を宣言し、メソッド 1 で $this->c=A を割り当てます。メソッド 2 では $this->c を直接使用します。メソッド 1 は、値を割り当てる前に最初に呼び出す必要があります

いいえ、スコープは制限されています。

これを読みたい場合は、クラスのグローバル変数として設定できます。



クラスの最初に public $a に設定しましたが、これでいいですか?

クラスで属性 $c を宣言し、メソッド 1 で $this->c=A を割り当てます。メソッド 2 では $this->c を直接使用します。値を割り当てる前にメソッド 1 を最初に呼び出す必要があります



の宣言は何ですか? public $a; として宣言し、方法 1 で述べたように値を割り当てましたが、方法 2 ではそれを読み取ることができません。

class T {  public $v;  function B() {    $this->v = 123;  }  function A() {    echo $this->v;  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

class T {  public $v;  function B() {    $this->v = 123;  }  function A() {    echo $this->v;  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー




これを書くと
class T{public  $p;function a{$this->p=1;}function b{echo $this->p;}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


ページが表示されたら、最初に関数 a を読み、次に関数 b を読み込む必要がありますか?


class T {  public $v;  function B() {    $this->v = 123;  }  function A() {    echo $this->v;  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー




これを書くと
class T{public  $p;function a{$this->p=1;}function b{echo $this->p;}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


が私のページに来ますin 最初に関数 a を読み、次に関数 b を読み込むのはどうですか?



これも上と同じで、先に値を代入してから読み込むのではありませんか

どうなると思いますか?
A が最初で、次に B が来る場合、それをどのように反映しますか? 関数 A で、関数 B の変数値を呼び出して

class T {  function B() {    return 123;  }  function A() {    echo $this->B();  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
しかし、これは を呼び出していません。関数 B の変数値 価値があります

つまり、基本的な出発点は、何かが間違っているということです



class T {  public $v;  function B() {    $this->v = 123;  }  function A() {    echo $this->v;  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー





class T{public  $p;function a{$this->p=1;}function b{echo $this->p;}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


と書いて、ページが入ってきたときに、最初に関数 a を読み、次に関数 b を読み込んだ場合はどうなるでしょうか?



これは上記と同じではありませんか、最初に値を割り当ててからそれを読み取ります



今試してみましたが、なぜ読んだのかわかりませんでしたヌル値。 。

class T {  function B() {    return 123;  }  function A() {    echo $this->B();  }}$p = new T;$p->B();$p->A(); //123
ログイン後にコピー
ログイン後にコピー
しかし、これは B を呼び出す価値ではありません

つまり、基本的な出発点に問題があります



class T{public  $p;function a{$this->p=1;}function b{echo $this->p;}}
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー


実際に実装したいビジネスロジックは、ページが到着した後、メソッドaの値がメソッドbに必要になるというものです。 AとBが同じhttpセッション内で実行されていない場合、メソッドaの値をメソッドb

で取得することはできますか?
じゃあ、こんなことを書くのは間違っているよ!

を達成するには他の通信事業者を使用する必要があります。実行 A と B は同じ http セッションにありませんか?
じゃあ、こんなことを書くのは間違っているよ!
それを実現するには他の通信事業者を使用する必要があります




私のページはメソッド A で受信し、次にメソッド B を非同期的に使用するため、2 つの異なる応答があり、変数を使用することはできません。お互いに使われていますか?

はい!異なるセッション間でデータを共有することはできません
。そのため、Cookie、セッション、データベース、ファイル、およびサードパーティのサポート ソフトウェアが必要です

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート