1

関数呼び出しでオブジェクトをパラメーターとして送信する方法は? オブジェクトを渡すときにオブジェクトをインスタンス化したくないので、うまくいきませんmyFunction( new myObject() )

myFunction後でオブジェクトをインスタンス化できるようにしたい。この方法でクラスを渡す方法がわかりません。

4

2 に答える 2

3

クラス名を文字列として渡し、インスタンス化します。

https://stackoverflow.com/a/4578343/362536

function ($className) {
    $object = new $className();
}
于 2012-07-17T18:17:54.830 に答える
2

文字列を渡して次のことを行うことができます。

myFunction($class) {
    $object = new $class();
}

しかし、より良い OOP アプローチは、ファクトリ オブジェクトを渡して、ファクトリにオブジェクトを作成させることです。

class MyFactory {
    public function create() { 
        return new myObject; 
    }
}

myFunction(MyFactory $factory) {
    $object = $factory->create();
}
于 2012-07-17T18:20:08.097 に答える