在__constructor函数PHP中创建新对象

时间:2014-11-05 05:44:21

标签: php class oop object

我可以在__constructor()中创建一个新对象吗?所以我可以在当前类方法中使用该类。

我想说我有这个课程

class Config{

  public function configure($data){

  }
}

我希望在Config方法中使用Myclass,如下所示:

include 'Config.php'

class Myclass {
   function __construct(){
     $this->conf = new Config();   //just create one config object
   }

   public function method1($data){
     $this->conf->configure($data); //call the configure method
   }


   public function method2(){
     $this->conf->configure($data); //call again the configure method
   }

}
我可以这样做吗?或者我必须经常创建新对象,如下所示:

class Myclass {

  public function method1($data){
    $this->conf = new Config(); //create config object
  }

  public function method2($data){
    $this->conf = new Config(); //create again config object
  }
}

由于我是编写自己的php oop代码的新手,我想知道当我想创建一个对象并在许多函数中使用它时哪种方法是有效的。谢谢!

4 个答案:

答案 0 :(得分:1)

首先声明$conf。它 -

include 'Config.php';

class Myclass {

   private $conf;
   function __construct(){
     $this->conf = new Config();   //just create one config object
   }

   public function method1($data){
     $this->conf->configure($data); //call the configure method
   }


   public function method2(){
     $this->conf->configure($data); //call again the configure method
   }

}

答案 1 :(得分:0)

你可以尝试

protected $objDb;

public function __construct() {
$this->objDb = new Db();
}

请参阅PHP DBconnection Class connection to use in another

看看是否有帮助

答案 2 :(得分:0)

您当然可以在构造函数中实例化一个新对象。您也可以将对象传递给它。

class Foo
{
    private $bar;

    public function __construct(BarInterface $bar)
    {
        $this->bar = $bar;
    }
}

围绕它的整个概念被称为"依赖注入"。

如果你设计这样的类,你总是可以为实现BarInterface的任何其他对象切换$ bar。

答案 3 :(得分:0)

除了上面给出的解决方案,您还可以扩展它,使Config文件成为超类。

class Config{
  // create a constructor method
  public function __construct() {
    // some initialisation here
  }

  public function configure($data){

  }
}

然后,您可以在代码中扩展此类以使用inheritance

include 'Config.php'

class Myclass extends Config {
   function __construct(){
     parent::__construct();   //initialise the parent class
     // more initialisation
   }

   public function method1($data){
     $this->configure($data); //call the configure method
   }


   public function method2(){
     $this->configure($data); //call again the configure method
   }

}

希望这有帮助。