Обработка ошибок в классе PHP

Эй, вот вопрос для вас, ребята.

У меня так много времени, чтобы выбрать обработку ошибок для классов в PHP.

Например, в Ajax PHP Handling Classes я делаю это следующим образом:

public function setError($msg) { $this->errors[] = $msg; } public function isFailed() { return (count($errors) > 0 ? true : false); // if errors > 0 the request is failed } public function getJsonResp() { if($this->isFailed()) { $resp = array('result' => false, 'message' => $this->errors[0]); } else { $resp = array('result' => true); array_merge($resp, $this->success_data); // the success data is set later } return json_encode($resp); } // an example function for a execution of a method would be this public function switchMethod($method) { switch($method) { case 'create': if(!isset($param1, $param2)) { $this->setError('param1 or param2 not found'); } else { $this->createSomething(); } break; default: $this->setError('Method not found'); } } 

Поэтому давайте узнаем, что я хочу для aks: есть ли лучшее решение для обработки ошибок?

Когда дело доходит до ООП, лучше всего использовать Исключения для обработки ваших ошибок, например:

 class Example extends BaseExample implements IExample { public function getExamples() { if($this->ExamplesReady === false) { throw new ExampleException("Examples are not ready."); } } } class ExampleException extends Exception{} 

бросая исключения внутри вашего класса и исключая исключения за пределами классов, которые бросают их, – это то, как я обычно общаюсь.

Пример использования:

 $Example = new Example(); try { $Examples = $Example->getExamples(); foreach($Examples as $Example) { //... } }catch(ExampleException $e) { Registry::get("Output")->displayError("Unable to perform action",$e); } 

и ваш displayError будет использовать $e->getMessage() в качестве информации об ошибке.

Как правило, при программировании в ООП вы будете использовать Исключения в качестве обработчика ошибок.

См. http://php.net/exceptions