1
factory
私は::class
を返したいと思います。しかし、工場では、TypeOneObject
,TypeTwoObject
などと呼ばれる数十種類の異なる型(工場に渡されるオブジェクトの種類によって決まる)を返す可能性があります。変数を使用してこのようなクラスを返すことは可能ですか?PHP工場から変数クラス名を返します
$type = $myrequiredclass->getType();
return $type."Object"::class; // wanting TypeOneObject::class
私は大きなif/then
かswitch
を行うのに十分簡単なことだろうが、私はそれを避けたいのですが知っている私は、私はいつもPHP Parse error: syntax error, unexpected '::'
を取得し、このreturn文を構築どんなにのように思えます。 $type
インスタンスからクラス名を取得するための最良の方法は、PHP get_class_methods機能を使用することです
class TypeOneObject
{
public static function whoAreYou()
{
return 'Type One Object!';
}
}
class MyRequiredClass
{
public function getType()
{
return 'TypeOne';
}
}
class MyFactory
{
public static function getFactoryObject(MyRequiredClass $class)
{
$type = $class->getType()."Object";
return $type::class;
}
}
$object = MyFactory::getFactoryObject(new MyRequiredClass());
$object::whoAreYou();
'{$型。 "オブジェクト"} :: class'又はおそらくと'() '? [mcve]は簡単なテストに役立ちました。 – Xorifelse
'$ myrequiredclass'には何がありますか? –
'$ type :: class;' 'class 'ビットがそこでやっていると正確に考えていますか?それを削除し、最後の行に 'echo'を追加すれば、すべて設定されます。つまり、私はこの例では工場の目的を見ていません。 –