2016-10-10 7 views
0

私は、データベースからデータをエクスポートすることができるクラスを持っています。この場合、OOPの使い方は?

パラメータ$tableを取る方法があります:

use App\User; 

public function query($table){ 
    return User::get(); 
} 

問題は、私は、要求に$tableを変更する必要があるということですが。この場合、私はオブジェクトモデルUserを使用できるデフォルトのインポートクラスuse App\User;を持っています。

しかし、パラメータとしてdinamiclyオブジェクトを使用したいのですか?

if($table == "users"){ 
    return User::get(); 
} else if ($table == "clients") { 
    return Client::get(); 
} 

を、トップクラス内のすべてのモデルクラスをインポート:

だから、私はそれを行うことができます。

しかし、これは良い方法ではない、私は事です。

+0

http://php.net/manual/en/language.oop5.autoload.phpで何かお試しください。 – Christoph

+1

$ table :: get();を返すことができます –

答えて

0

これが探しているものかどうかは不明ですが、マップを作成してテーブルをオブジェクトにマップしてみることもできます。

$map = array('users' => User::class, 'clients' => Client::class); 
$object = $map[$table]; 
return $object::get(); 
+0

あなたはそれをチェックしましたか?別の名前空間のファイルでは機能しません –

+0

もちろん、ファイルの先頭に 'use'ステートメントを追加してください。 – Pete

+0

あなたはそれをチェックしましたか?私のプロジェクトの1つでは、うまく動作しませんでした。しかし、テストし&働かせたら、私は何も言いません。 –

関連する問題