Size: a a a

2020 January 09

РД

Ратмир Диронин in phpGeeks
Жесть как тут у вас...
источник

BH

Bogdan Hmarnii in phpGeeks
это же суть пхп 1 req 1 resp
источник

🦔

🦔 in phpGeeks
Bogdan Hmarnii
ты в кетче можешь произвести манипуляции но на этом код как бы умирает и возвращает ошибку
какую ошибку? если ты поймал исключение и не бросил новое, то всё классно и код пойдёт после кетча далее
источник

BH

Bogdan Hmarnii in phpGeeks
а…не так понял, да если просто сделать catch без throw, то код пойдет дальше
источник

РД

Ратмир Диронин in phpGeeks
catch ловит исключение, его можно аннулировать и тупо пустить код дальше
источник

🦔

🦔 in phpGeeks
Alex
я пока остановился на "вынести неизменную логику в отдельный метод родительского класса"
но трабла основная в том, что код родительского метода обернут в try catch который просто позвращает null, а мне надо обрабаотывать ошибку и хочу сделать
тот же самый метод но без try-catch
тут чёт не особо понятно, что там у тебя происходит, но строить логику на исключениях очень дорого в плане ресурсов и вообще моветон
источник

BH

Bogdan Hmarnii in phpGeeks
тоже не понимаю…разве что ожидается ошибка от какой-то либы, и вместо нее делается catch(….) { return null}, вообще похоже на обращение к r5 и методу find который возвщарает model or exception
источник

A

Alex in phpGeeks
Bogdan Hmarnii
тоже не понимаю…разве что ожидается ошибка от какой-то либы, и вместо нее делается catch(….) { return null}, вообще похоже на обращение к r5 и методу find который возвщарает model or exception
Угу примерно так
источник

BH

Bogdan Hmarnii in phpGeeks
@didalex обверни просто основную функцию двумя и сделай 2 разные реализации, примерно:

class Repository {
/** throws exception **/
 public function findModel(int id): Model {
   $this->getModel($id);
}

public function findModelOrNull(int id):  ?Model {
  try{  
  $this->getModel($id);
  } catch(…) return null;
}

private function getModel(int id): Model {
  $this->repository->find(id);
}
}
источник

A

Alex in phpGeeks
Bogdan Hmarnii
@didalex обверни просто основную функцию двумя и сделай 2 разные реализации, примерно:

class Repository {
/** throws exception **/
 public function findModel(int id): Model {
   $this->getModel($id);
}

public function findModelOrNull(int id):  ?Model {
  try{  
  $this->getModel($id);
  } catch(…) return null;
}

private function getModel(int id): Model {
  $this->repository->find(id);
}
}
ну вот я сейчас так и делаю. спасибо)
источник

AS

Alexey Shatunov in phpGeeks
Bogdan Hmarnii
@didalex обверни просто основную функцию двумя и сделай 2 разные реализации, примерно:

class Repository {
/** throws exception **/
 public function findModel(int id): Model {
   $this->getModel($id);
}

public function findModelOrNull(int id):  ?Model {
  try{  
  $this->getModel($id);
  } catch(…) return null;
}

private function getModel(int id): Model {
  $this->repository->find(id);
}
}
это не совсем правильно, null должен возвращать метод getModel приватный а что в try оборачивать это уже отдельный разговор
источник

BH

Bogdan Hmarnii in phpGeeks
ты не понял соль наверное @AlexeyShatunov у ларавела есть либа r5, которая дает тебе репозиторию. У нее есть метод find(byId) который уходит в вендор и вызывает метод public function findOrFail() ты можешь это хендлить только try catchем
источник

AS

Alexey Shatunov in phpGeeks
Bogdan Hmarnii
ты не понял соль наверное @AlexeyShatunov у ларавела есть либа r5, которая дает тебе репозиторию. У нее есть метод find(byId) который уходит в вендор и вызывает метод public function findOrFail() ты можешь это хендлить только try catchем
я все отлично понял, если не найдена запись по id то кинуть исключение... и в любом случае нельзя мешать системные исключения и программные, в случае первых некорректно их замалчивать и возвращать null
источник

BH

Bogdan Hmarnii in phpGeeks
еще раз, не ты кидаешь, а вендор, если тебе нужно поведение ОБЫЧНОЕ, как в чистом Elequent с его model->find() ?Model, то у тебя ничего не остается кроме, как перехватить try\catch
источник

AS

Alexey Shatunov in phpGeeks
Bogdan Hmarnii
еще раз, не ты кидаешь, а вендор, если тебе нужно поведение ОБЫЧНОЕ, как в чистом Elequent с его model->find() ?Model, то у тебя ничего не остается кроме, как перехватить try\catch
тогда я бы такое не использовал
источник

BH

Bogdan Hmarnii in phpGeeks
Верю! Когда вендор душит и не дает тебе flaxibility то это плохо... но как я понял у Леши +- такой случай
источник

EY

Eugene Yurkevich in phpGeeks
так кэтчить нужно только один тип exceptions: ModelNotFoundException
Остальные пусть бросаются
источник

EY

Eugene Yurkevich in phpGeeks
или как он там называется)
источник

BH

Bogdan Hmarnii in phpGeeks
можнно и так
catch (ModelNotFoundException $e) { return null}
catch (\Exception $e) {retrhrow}
проблема в. том что нет контекста где проблема)) и возможно нужно 2 разных поведения в зависимости от 1 ошибки, но думаю этот топик уже не актуален
источник

ОШ

Олег Шварновський in phpGeeks
ку ребят надо перехватить домен, предыдущий владелец не оплатил, какой наиболее верочный вариант? чтоб сразу узнать об освобождении
источник