代码之家  ›  专栏  ›  技术社区  ›  Scott

有一个可用于类uu construct()的变量

  •  1
  • Scott  · 技术社区  · 14 年前

    我正试图将变量传递到类中,因此 __construct() 但是可以使用它 _构造()

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

    5 回复  |  直到 12 年前
        1
  •  1
  •   prodigitalson    14 年前

    +1雅科比的一般回答。至于他关于将逻辑移入另一种方法的提示,我喜欢做如下的事情:

    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;
        }
    }
    

    现在只需将setMyPropertyMethod添加到类中,我就可以通过 __construct init 通过简单地将数据作为数组 array('myProperty' => 'myValue') . 更进一步,如果对象已经用 isInitialized 方法。现在,您可以做的另一件事是添加一个需要设置的“必需”属性列表,并对其进行筛选,以确保这些属性是在初始化或构造期间设置的。它还为您提供了一种简单的方法,通过简单地调用 初始化 (或) setOptions 如果你愿意的话)。

        2
  •  4
  •   johannes    14 年前

    构造函数可以获取参数,并且可以初始化属性…

    class Controller {
        public $variable = 23;
    
        function constructor($othervar) {
            echo $this->variable;
            echo $othervar;
        }
    }
    
    $app = new controller(42);
    

    打印2342。请参阅PHP文档。 http://php.net/manual/en/language.oop5.decon.php

        3
  •  2
  •   Yacoby    14 年前

    将变量作为参数传递给构造函数

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

    或者将构造函数所做的工作放到另一个函数中。

        4
  •  1
  •   jellyfishtree    14 年前

    需要将参数参数添加到构造函数定义中。

        class TheExampleClass {
           public function __construct($arg1){
              //use $arg1 here
           }
        ..
        }
    
    ..
    
    $MyObject = new TheExampleClass('My value passed in for constructor');
    
        5
  •  1
  •   Parvin Gasimzade    12 年前
    class Controller {
        public $variable;
    
        function __construct() {
            echo $this->variable;
        }
    }
    
    $app = new Controller;
    $app->variable = 'info';
    

    构造后,将“info”分配给变量, 所以构造函数不输出任何东西, 所以在运行echo之前必须分配;

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

    现在你可以看到你想要什么了;