2016-10-10 3 views
0

У меня есть класс, который позволяет экспортировать данные из базы данных.Как использовать ООП в этом случае?

Существует метод, который принимает параметр $table:

use App\User; 

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

Проблема заключается в том, что мне нужно изменить $table в запросе. В этом случае я по умолчанию импортировал класс use App\User;, что позволяет использовать объектную модель User.

Но если я хочу использовать объект динамически, как в качестве параметра?

Таким образом, я могу сделать это:

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

Вы проверили его? В одном из моих проектов это не сработало, я протестировал. Но если вы протестировали & работали, тогда мне нечего сказать. –

Смежные вопросы