OOP:课程应该为自己获取信息吗?

时间:2014-08-25 12:26:35

标签: php oop configuration

我正在开发一个类,它将使用凭据从远程源获取一些信息。这些凭证不会经常更改,因此它们可以成为配置的一部分。我的问题是,在PHP OOP中有什么更好的做法:

  1. 该类从构造配置中读取这些凭据。

    public function __construct()  
    {  
        //get credentials from database, etc...  
    }
    
  2. 调用者类在构造时将它们作为参数提供。

    public function __construct($credentials)  
    {  
        //save them for later use  
    }
    

3 个答案:

答案 0 :(得分:1)

第二个例子。因为您对其他类的依赖性较小,因此可重用性较高。

这可能很有用:Why should a web architecture be loosely coupled?

答案 1 :(得分:1)

一个类永远不应该依赖外部的变量,除了参数之外。如果以这种方式构建程序,则可以在其他程序中重用类,或在其他参数的同一程序中重用。你应该问自己的问题:我可以再次使用这门课吗?在这种情况下答案是否..所以将它作为参数。

如果你认为一遍又一遍地给出参数很烦人。您可以使用依赖注入来自动提供正确的参数。或者使用基于配置构造类的工厂模式。

答案 2 :(得分:-1)

数字#1:在数据库中的某些情况下,如果您不需要始终初始化该值。

class Mysql{    
    public function __construct(){
        $conn = mysql_connect("localhost", "root", "") or die("Error");
        mysql_select_db("dbname",$conn) or die("Error");
    }

    public function inser_data(){
        // query here...
    }
}

数字#2:这取决于你班级的行为。如果您需要设置值以使您的课程运行良好,那么您需要始终获取数据。

class Bike{
    var $speed;
    var $type;
    public function __construct($properties){
        $this->speed = $properties["speed"];
        $this->type = $properties["type"];
    }

    public function calculation(){
    // script here...
   }
}