0

PHP のクラスは初めてですが、関数内のクラス内から変数にアクセスするにはどうすればよいですか?

 //how can I echo the value of the title variable outside the class?
 echo $title; 
 class myClass {

  function form() {
      echo '<input type="text" value="'.$title.'" />';
   }

 }   

助けてくれてありがとう

4

3 に答える 3

4

グローバル変数に依存せずに外部変数を使用できるようにするためにできること(悪い習慣)は、外部から変数を渡すことです。このような:

  class myClass {

    function form($title) {
      echo '<input type="text" value="'.$title.'" />';
     }

 }   

次に、次のように関数を呼び出すことができます。

$class = new myClass();
$class->form('This is going to be the title');

カップリングを作成し、アプリケーションの周囲で何が起こっているのかを追跡できなくなるため、グローバルは良くありません。グローバル変数を1つの場所で変更すると、別の場所でコードを傷つけるリスクがあります。したがって、カプセル化に依存し、必要なものを明示的に「注入」することをお勧めします。

于 2013-03-02T23:55:58.857 に答える
4

まず第一に、あなたの変数$titleは、あなたが共有しているコードのスコープ内のどこにも定義されていないようです.


それにもかかわらず、これを処理する 4 つの方法を共有できます。

1.そのクラスのすべてのインスタンスに固有のクラスのメンバー としてタイトルを持つことによってmyClass

class myClass {
    public $title = '';
  function form() {
      echo '<input type="text" value="'.$this->title.'" />';
   }

}

$myClass = new myClass();
$myClass->title = 'My title';

2.クラス内で定数を使用することにより、すべてのmyClassクラス インスタンスで同じになります。

class myClass {
     const title = 'My title';
  function form() {
      echo '<input type="text" value="'.myClass::title.'" />';
   }

}

3. 呼び出す関数に変数を渡す

class myClass {
  function form($title) {
      echo '<input type="text" value="'.$title.'" />';
   }

}

$myClass = new myClass();
$myClass->form('My title');

4.globalしようとしているような変数の使用。

グローバル変数は注意して使用してください。ここここ で説明されているように、必要がない場合は使用しないでください。

$title = 'My title';
class myClass {
    function form() {
        global $title; // <-- declare here that we will use the global variable $title
        echo '<input type="text" value="'.$title.'" />';
    }
}
于 2013-03-02T23:42:13.207 に答える
0
 class myClass {
 public $title;     
  function form() {
      echo '<input type="text" value="'.$this->title.'" />';
   }

 }  

あなたは、クラス内でアクセスする方法を言いましたが、あなたの例では、プロパティ/変数はクラス内にありませんでした。言ってるだけ..

于 2013-03-02T23:34:23.217 に答える