Bir sınıf işlevi içinde PHP erişim harici $ var

5 Cevap php

PHP, nasıl bir sınıfta bir işlev içinde kullanılmak üzere bir harici $ var kullanabilirim? Örneğin, true $ some_external_var setleri söylemek ve sizin gibi bir şey var

class myclass {
bla ....
bla ....

function myfunction()  {

  if (isset($some_external_var)) do something ...

   } 

}


$some_external_var =true;

$obj = new myclass();
$obj->myfunction();

Teşekkürler

5 Cevap

Global $some_external_var;

function myfunction()  {
  Global $some_external_var;
  if (!empty($some_external_var)) do something ...

   } 

}

Boş değilse Ancak Global otomatik olarak ayarlar nedeniyle, kontrol edin.

bu kötü yazılım tasarımı bulunuyor. Işlevine bir sınıf için amacıyla, bu veri ile temin edilmesi gerekmektedir. Yani, aksi takdirde gereksiz bağımlılıkları oluştururken, sınıfın içine dış VAR geçmektedir.

Neden sadece (__ yapı sırasında bu değişken geçmek) ve bu değişkenin doğruluk değeri koşullu inşaat sırasında nesne ne yaptığını yapmazlar?

Kullanım Setters ve Alıcılar ya da belki bir merkezi yapılandırma gibi:

function config()
{
  static $data;

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

  return $data;
}

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

ve kullanım ver:

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

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

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