私は、いくつかのコアファイルとモデルを 'model'ディレクトリに入れてカスタムフレームワークを作成しました。今私は必要なときにのみモデルからオブジェクトを作成しています。しかし、私はすべてのモデルクラスから自動的にオブジェクトを作成したいと思います。たとえば、「モデル」ディレクトリにある三つのモデルクラス、PHPでの動的オブジェクトの作成
//-----------[ ObjectOneModel.php ]-------------------
class ObjectOneModel
{
}
//-----------[ ObjectTwoModel.php ]-------------------
class ObjectTwoModel
{
}
//-----------[ ObjectThreeModel.php ]-------------------
class ObjectThreeModel
{
}
と正常に動作しますが、ObjectOneからのデータがObjectThreeModelに使用されているので、例えばObjectThreeModelがObjectOneへのアクセスを必要とする一つのメインコントローラ
class Controller
{
public function __construct()
{
$files = scandir('models/');
foreach ($files as $file)
{
if (preg_match('/^[A-Z]{1}[A-Za-z]*Model.php/', $file))
{
$object_name = str_replace('Model.php', '', $file);
$class_name = str_replace('.php', '', $file);
$this->{$object_name} = new $class_name();
}
}
}
}
があります。私はそこに新しいオブジェクト
//-----------[ ObjectThreeModel.php ]-------------------
class ObjectThreeModel
{
public function __construct()
{
$ObjectOne = new ObjectOneModel();
}
}
を作成しますが、私は、メモリ内の2つの同じオブジェクトがあるので、これは醜い解決することを考えることを考え出しました。私は作成されたオブジェクトで必要なオブジェクトをコンストラクタに伝える方法を見つける必要があり、コンストラクタはこのオブジェクトを自分自身のパラメータとして渡します。それは記述するのが難しいですが、私はあなたが私の問題を理解することを願っています。
このオブジェクトにアクセスさせるオブジェクトのコンストラクタにパラメータを渡します。つまり、 'public function __construct($ otherObject){$ objectOne = $ otherObject}' – RiggsFolly
また、http://php.net/manual/ en/language.oop5.autoload.php。 – AbraCadaver
AbraCadaver、私のプロジェクトで既にオートロードを使用していますが、私の問題点はありませんが、助けてくれてありがとうございます:-) – Bejkrools