PHP ile bir kurucu içinde global değişken

3 Cevap php

Bu açık olmalı, ama ben PHP değişken kapsamı hakkında biraz karıştı alıyorum.

Ben daha sonra aynı sınıfta bir işlevde kullanmak istediğiniz, bir Oluşturucu içinde bir değişken var. Benim geçerli yöntem şudur:

<?php

class Log(){

   function Log(){
      $_ENV['access'] = true;
   }

   function test(){
      $access = $ENV['access'];
   }

}

?>

Ortam değişkenleri kötüye daha bunu yapmak için daha iyi bir yolu var mı? Teşekkürler.

3 Cevap

You could use a class variable, which has a context of... a class :
(Example for PHP 5, of course ; I've re-written a few things so your code is more PHP5-compliant)

class Log {
   // Declaration of the propery
   protected $_myVar;

   public function __construct() {
      // The property is accessed via $this->nameOfTheProperty :
      $this->_myVar = true;
   }

   public function test() {
      // Once the property has been set in the constructor, it keeps its value for the whole object :
      $access = $this->_myVar;
   }

}

Sen bir göz atmalısınız:

Globals zararlı olarak kabul edilir. Bu bir dış bağımlılık ise, yapıcı aracılığıyla geçmek ve daha sonra kullanmak üzere bir malın içine kaydedin. Eğer bu sadece sınamak için arama sırasında ayarlamak gerekiyorsa, bu yöntemi ona bir argüman yapma düşünebilirsiniz.

Eğer küresel anahtar kelime kullanabilirsiniz:

class Log{
    protected $access;
    function Log(){
        global $access;
        $this->access = &$access;
    }
}

Ama gerçekten yapıcı değişken geçirmeden alınmalıdır:

class Log{
    protected $access;
    function Log($access){
        $this->access = &$access;
    }
    //...Then you have access to the access variable throughout the class:
    function test(){
        echo $this->access;
    }
}