[英]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.