0

PHP では、クラスの関数内で使用する外部 $var をどのように使用しますか? たとえば、 $some_external_var が true に設定され、次のようなものがあるとします

クラスマイクラス{
ブラ....
ブラ....

関数 myfunction() {

  if (isset($some_external_var)) 何かをする ...

   }

}


$some_external_var =true;

$obj = 新しい myclass();
$obj->myfunction();

ありがとう

4

5 に答える 5

5

global外部変数をその関数から見えるようにするには、関数内でキーワードを使用する必要があります。

例えば ​​:

$my_var_2 = 'glop';

function test_2()
{
    global $my_var_2;
    var_dump($my_var_2);  // string 'glop' (length=4)
}

test_2();

$GLOBALS関数内でも常に表示される配列を使用することもできます。


しかし、一般的に、グローバル変数を使用することは良い習慣とは見なされていません: あなたのクラスは、そこにあるかもしれないし、ないかもしれないある種の外部のものに依存すべきではありません!

より良い方法は、メソッド自体またはクラスのコンストラクターに、必要な変数をパラメーターとして渡すことです...

于 2009-07-31T18:08:33.290 に答える
3

Global $some_external_var;

関数 myfunction() {
  グローバル $some_external_var;
  if (!empty($some_external_var)) 何かをする ...

   }

}

ただし、Global によって自動的に設定されるため、空でないかどうかを確認してください。

于 2009-07-31T18:00:30.013 に答える
3

それは悪いソフトウェア設計です。クラスが機能するためには、データを提供する必要があります。したがって、その外部変数をクラスに渡します。そうしないと、不要な依存関係が作成されます。

于 2009-07-31T18:05:07.883 に答える
2

__construct() 中にこの変数を渡して、その変数の真の値を条件として、構築中にオブジェクトが何をするかを考えてみませんか?

于 2009-07-31T18:06:39.737 に答える
0

セッターとゲッターを使用するか、次のような集中型構成を使用します。

function config()
{
  static $data;

  if(!isset($data))
  {
    $data = new stdClass();
  }

  return $data;
}

class myClass
{
    public function myFunction()
    {
        echo "config()->myConfigVar: " . config()->myConfigVar;
    }
}

そしてそれを使用します:

config()->myConfigVar = "Hello world";

$myClass = new myClass();
$myClass->myFunction();

http://www.evanbot.com/article/universally-accessible-data-php/24

于 2009-07-31T18:24:06.360 に答える