Здравствуйте!
Появилось несколько вопросов в процессе разработки.
В app создал две директории Classes и Interfaces. В Classes создаю свои классы, которые имплементируют соответствующие интерфейсы. Классы могут быть сгруппированы в поддиректориях внутри директории Classes. В контроллерах подключаю и вызываю методы нужных классов.
//Class
class Gibhub implements VCSInterface
{
public function getRepositories(string $author) array
{
$response = Http::get('api.github.com/...')->json();
if (!isset($response['key']) {
throw new Exception('Not found');
}
return $response;
}
}
//Controller
private $github;
public function __construct(App\Classes\Github $github)
{
$this->github = $gibhub;
}
public function get(string $author)
{
try {
$repository = $this->github->getRepositories($author);
} catch (Exception $e) {
return response()->json([
'status' => $e->getStatus(),
'message' => $e->getMessage()
]);
}
return response()->json($repository);
}
1) Правильно ли организован код?
2) Я в методе getRepositories в классе Github выбрасываю исключение по условию, а в контроллере вызываю этот метод и оборачиваю его в try-catch. PhpStorm при этом подсвечивает команду "throw new Exception" с комментарием "Unhandled Exception". PhpStorm вроде только дельные комментарии выводит, может так не принято код писать?
3) Нужно ли указывать тип возвращаемых значений у методов контроллеров?
public function get(string $author) object
{
...
return response()->json($repository);
}
Спасибо.