【问题标题】:PHP OOP UML Separate databse config details from classPHP OOP UML 从类中分离数据库配置细节
【发布时间】:2016-12-12 07:59:42
【问题描述】:

我正在为学校项目开发电子商务商店。 我有几个这样的类使用相同的数据库连接。 所以我必须把它们分开。
1. 如何为我的所有类使用单个数据库连接文件。我有几个与此相同的类
2.我画了一些用例和类图。如果有人在 UML 方面有经验 - (电子商务)你能验证这些吗?

类 abc {

 public $id;
 public $name;
 public $email;  
 public $db;   

 function __construct()
    {$this->db=new mysqli('localhost','root','','cart');}



public function newsletter_subcribe()
{$sql="insert into table (id,name,email) value('$this->id','$this->name','$this->email')";  
$this->db->query($sql);}

【问题讨论】:

  • 第一个问题:研究依赖注入。并查看准备好的语句......
  • 您使用数据库的方式可能不安全且易受攻击!请阅读:stackoverflow.com/questions/60174/…
  • 依赖注入是可行的方法,它使您的代码也具有可移植性和灵活性。因此,您将凭证交给构造函数,通常以静态数据对象的形式。
  • 这是学校项目。我在问如何为我的所有课程使用单个数据库连接文件

标签: php mysql oop uml


【解决方案1】:

这个类是对你的数据库进行一些查询以获取 CRUD,你能做的最好的事情是多创建一个控制器来访问这个类,同时确保每个函数都是私有的,而不是公共的。

所以基本上控制器会将数据发布到类以执行 CRUD。 更像是 CI 中的模型。

控制器 -->> 你的类 -->> 数据库

CLASS A 
{
private function dbconnection()
{
}

private function a($param)
{
dbconnection();
//CRUD HERE
} 
}


CLASS B

main function()
{
//load class A here, and you can access all method
$result = a($param);
}

【讨论】:

  • 我没有得到你。如何为我的所有类使用单个数据库连接文件。我有几个与此相同的类。我不想在每个类中输入用户名和密码数据库名称和 $db
  • 您不需要在每个类中输入用户名和密码数据库名称,例如:CLASS A,其中包含数据库连接和执行 CRUD 的所有方法(所有方法函数都是预期参数来执行 CRUD),然后在您的控制器或 B 类中,您需要做的是加载 A 类以访问方法函数而不是 db 连接,并将参数传递给 A 类
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多