2013-02-25 98 views
1

今天我来到这里,询问是否明智地将define();连接变量连接到数据库。我的例子如下:定义连接变量是否明智?

// Constants For Database 
define ("DBAHost", "localhost"); 
define ("DBAUsername", "xxx"); 
define ("DBAPassword", "xxx"); 
define ("DBADB", "xxx"); 

和连接处理;

class ClassWork 
{  
    public function AllowDB ($Arg1) 
    { 
     if ($Arg1 === 1) 
     { 
      $MySQLi = new mysqli(DBAHost, DBAUsername, DBAPassword, DBADB); 
      return 'Success... ' . mysqli_get_host_info($MySQLi); 
     } 
     elseif ($Arg1 !== 1) 
     { 
      return 'Wrong Argument Please Consult The Documentation!'; 
     } 
    } 
} 

或者宁愿修改接受datbase连接字符串以通过公共函数?

+0

AllowDB类classWork和方法是什么? – 2013-02-25 14:10:52

+0

课堂作业是一个包含所有由少数开发人员使用的所有生产代码的类,我们还没有将其转移到一个命名空间,因为并非所有的开发人员都了解它的用法; AllowDB连接到数据库,并将用作其他类功能的连接变量 – user1968541 2013-02-25 14:13:12

+0

@YourCommonSense引发另一个问题,我如何能够从第一个公共函数与数据库进行通信? – user1968541 2013-02-25 14:27:45

回答

1

纯粹的面向对象的方式是将任何需要的参数传递给类实例。

也就是说,根据您的需要,可以使用全局定义的数据库实例。请记住,如果不进行重构,您将无法轻松地处理多个数据库。用这种方法你正在装点自己。

+0

有了这个包,我只需要使用1个数据库..所以用这种方法,我觉得是的,我正在装箱;但它限制了我自己到一个数据库,并保持在我的要求内......但我想知道的是,使用'define();'它是安全的吗?这些常量可以在开发控制台或其他东西中锁存和回显出来吗? – user1968541 2013-02-25 14:11:51

+0

@ user1968541,你是什么意思,它安全吗?任何你定义的服务器端都会停留在服务器端,直到你将它发送给客户端。 – Brad 2013-02-25 14:28:56

+0

这引发了另一个问题,我如何能够从第一个公共职能与数据库进行通信? – user1968541 2013-02-25 14:30:03

1

你说的是常量而不是变量。
只有一次使用的常数没有多大意义。
最好用设置创建一个数组并将其传递给数据库包装类。