したがって、たとえばfooというクラスがあり、mongoまたはmysqlのいずれかにデータを格納する2つの方法があります。
現時点で私は次のようなものを持っています
namespace vendor;
use bar;
use bar\mysql;
class foo extends bar\mongo {
}
今それを行うためのより良い方法はありますか?私はそれがどのパターンであるかわからないことがあることを知っています。
適用できる原則は次のように呼ばれます。
継承よりも構成を優先する
つまり、それらのオブジェクトから継承する代わりに、それらのオブジェクトのクラス インスタンスを与えてから、それに対して操作を行います。
例えば:
class Mysql
{
function getItems($what)
{
//return items from mysql
}
}
class MongoDB
{
function getItems($what)
{
//return items from MongoDB
}
}
class Foo
{
protected $db;
public function __construct($db)
{
$this->$db = $db;
}
public function getFooItems()
{
$this->db->getItems('foo')
}
}
$db = new Mysql();
$foo = new Foo($db)
$foo->getFooItems(); //Will operate on the mysql db
$db1 = new MongoDB();
$foo1 = new Foo($db1);
$foo1->getFooItems(); //Will operate on the MongoDB
これが役立つことを願っています