0

現在、私は現在次のようなものを書いたいくつかのコードを刷新しています:

<?php
global $foo;
$foo = "foo";

class foo{
   function bar(){
      global $foo;
      return $foo."bar";
   }
}

$class = new foo();
echo foo->bar();
//returns 'foobar';
?>

これは問題なく機能します。私の質問は、これは変数を含める正しい方法ですか?私のクラスファイルの中には、20以上のグローバル変数があり、それらが使用されるすべてのメソッドでグローバルとして再定義する必要があります。

4

1 に答える 1

3

可能であれば、グローバル変数は避けてください。SOには、なぜそれが悪い習慣と見なされるのかを説明する多くの回答があるので、ここで理由を繰り返すことはしません()。

代わりに、次のように、クラス内で必要な変数をコンストラクターに渡します。

class foo{

   protected $foo;

   public function __construct($foo){
     $this->foo = $foo;
   }

   public function bar(){
      return $this->foo . "bar";
   }
}

$foo = "foo";
$class = new foo($foo);
echo foo->bar();
于 2013-01-21T01:59:08.960 に答える