Sınıf için bir değişken kullanılabilir olması __ construct ()

5 Cevap php

Ben __construct() herhangi değişkenleri sınıfa geçirilen önce __construct() denir ancak kullanabilirsiniz böylece bir sınıf içine bir değişken geçmek için çalışıyorum. __construct() önce değişken göndermek için herhangi bir yolu var mı? İşte kod:

class Controller {
public $variable;

function __construct() {
    echo $this->variable;
}

}

$app = new Controller;
$app->variable = 'info';

Yardımlarınız için teşekkürler!

5 Cevap

1 Yacoby genel cevaptır. Bildiğim kadarıyla ben aşağıdaki gibi bir şey yapmak ister başka bir yöntemle içine mantığı taşıma hakkında yaptığı ipucu olarak:

class MyClass
{
    protected $_initialized = false;

    public function construct($data = null)
    {
        if(null !== $data)
        {
            $this->init($data);
        }
    }

    public function init(array $data)
    {
         foreach($data as $property => $value)
         {
              $method = "set$property";
              if(method_exists($this, $method)
              {
                   $this->$method($value);
              }

              $this->_initialized = true;
          }

          return $this;
    }

    public function isInitialized()
    {
         return $this->_initialized;
    }
}

Şimdi sadece sınıf bir setMyPropertyMEthod ekleyerek i sonra sadece array('myProperty' => 'myValue') gibi bir dizi olarak veri ileterek __construct veya init ile bu özelliği ayarlayabilirsiniz. Nesne isInitialized yöntemi ile "başlatıldı" ise, daha çok ben dışarıdan kolayca mantığı test edebilirsiniz. Şimdi yapabileceğiniz başka bir şey, bu başlatma veya inşaat sırasında ayarlanır emin olmak için ayarlanmış ve filtre gerekiyor "gerekli" özelliklerinin bir listesini ekleyin. O da size (ya da isterseniz setOptions) basitçe init çağırarak belirli bir zamanda seçenekleri bir sürü ayarlamak için kolay bir yol sağlar.

Yapıcı parametreleri alabilir ve özelliklerini başlatabilirsiniz ...

class Controller {
    public $variable = 23;

    function constructor($othervar) {
        echo $this->variable;
        echo $othervar;
    }
}

$app = new controller(42);

Baskılar PHP belgelerine 2342.See. http://php.net/manual/en/language.oop5.decon.php

Yapıcı bir argüman olarak değişken geçmek ya

function __construct($var) {
    $this->variable = $var;
    echo $this->variable;
}
//...
$app new Controller('info');

Veya farklı bir işlevi kurucu tarafından yapılan çalışma koydu.

Siz yapıcı tanımına argüman parametreleri eklemeniz gerekir.

    class TheExampleClass {
       public function __construct($arg1){
          //use $arg1 here
       }
    ..
    }

..

$MyObject = new TheExampleClass('My value passed in for constructor');
class Controller {
    public $variable;

    function __construct() {
        echo $this->variable;
    }
}

$app = new Controller;
$app->variable = 'info';

You assign 'info' to variable after construction , so the construct function output nothing, so you must assign before run echo;

class Controller {
    public $variable;
    function __construct() {
        $this->variable = "info";
        echo $this->variable;
    }
}

$app = new Controller();

Şimdi ne istediğinizi görebilirsiniz;