繁体   English   中英

基于数据库连接的PHP OO动态类方法实现

[英]PHP OO Dynamic Class Methods Implementations Based on Database Connection

我正在构建一个从不同数据库(客户端数据库)提取数据,过滤数据并在本地存储的系统。 每个人(客户,商店,交易)存储的数据都相同,但来自不同数据库的数据将不同。 我需要根据他们的数据库过滤此数据,例如:

我有以下模型(我正在使用LaravelPHP ): Client -使用此模型,我可以调用Client::filterData($data) ,它将适用于特定的客户端。 我想使用相同的模型和方法来过滤我的数据,但是要使用基于客户端数据库的不同接口。

就像电子商务对他们的货运类/方法一样。 他们有一个父类,从不同类型的货件扩展而来。

如果不够清楚,我可以使我的解释更好。 我希望你们能帮助我解决这个问题。 谢谢!

要回答您的问题:

客户端-使用此模型,我可以调用Client :: filterData($ data),它将适用于特定客户端。 我想使用相同的模型和方法来过滤我的数据,但是要使用基于客户端数据库的不同接口。

您真正要寻找的是如何在运行时替换数据库连接。 不幸的是,Laravel无法很好地支持依赖注入,因此您必须解决此问题以使其起作用:

abstract class AbstractClient extends Eloquent
{
   // move everything from Client class into this one
}

然后简单地扩展它,并定义要在init()方法中使用的连接

class Client extends AbstractClient 
{
       public funciton init()
       {
           DB::reconnect('client_database');
       }
}

对于另一个客户:

class AnotherClient extends AbstractClient 
{
       public funciton init()
       {
           DB::reconnect('another_client_database');
       }
}

这样,您可以为不同的连接设置相同的模型。 当然需要改进,我留给您了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM