2012-10-25 42 views
1

到目前为止,我已经写了一个月的面向对象风格,现在我想知道哪种方法是用sql查询的正确方法。因此,例如,我有类getPlayerData函数。那么,哪一种方式更好 - 1)做一个mysql程序类外,并给予牵强阵列getPlayerData 2)是否所有的程序类对象中的Mysql查询

,如果你认为第二种情况那么我应该开始与全球各功能$变量,其中mysqli实例启动?

对不起,如果我不使用正确的条款,你可以随时纠正我。谢谢!

回答

1

而不是给每一类功能的全局变量,你可以这样做:

class Test{ 

    protected $mysqli = null; 

    function __construct($mysqli = null){ 
     $this->mysqli = $mysqli; 
    } 

    public function setMySqli($mysqli){ 
     $this->mysqli = $mysqli; 
    } 

    public function getSomething(){ 
     $result = $this->mysqli->query("SELECT something FROM table"); 
     //do something with result here 
     return $result; 
    } 

} 

允许你使用你的对象,像这样:

$test = new Test($mysqli); 
$result = $test->getSomething(); 

$test = new Test(); 
$test->setMySqli($mysqli); 
$result = $test->getSomething(); 
+1

加入韦恩惠特斯的答案。他在这个类中所做的称为依赖注入,在这种情况下被认为是最佳实践。 –

+0

这让事情变得如此清晰。我了解这些事情,现在我知道最好的办法。谢谢:)我看到我的格式在开放式文章中非常难看,所以很抱歉。 –