저는 앞으로 모든 webapp에서 PDO를 사용할 생각입니다. 내용 별과PDO에서 try-catch 사용법을 사용합니다.
class DB {
private static $instance = NULL;
private static $dsn = "mysql:host=localhost;dbname=mydatabase;";
private static $db_user = 'root';
private static $db_pass = '0O0ooIl1';
private function __construct()
{
}
private function __clone()
{
}
public static function getInstance() {
if (!self::$instance)
{
self::$instance = new PDO(self::$dsn, self::$db_user, self::$db_pass);
self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$instance;
}
}
및 다른 파일 (functions.php) : 현재 제가 데이터베이스 연결을 처리 할 수있는 내 사이트에있는 것은 싱글 톤이 같은 클래스 (내가 지금까지에서 배운 내용을 사용) 함수는 정확히 하나처럼 보이는 :
function get_recent_activities()
{
try
{
$db = DB::getInstance();
// --prepare and execute query here, fetch the result--
return $my_list_of_recent_activities;
}
catch (PDOException $e)
{
return "some fail-messages";
}
}
...
나는 모든 기능에 try .. catch
부분을 반복해야 할 것을 의미한다.
내 질문은 :
-
? (예 : 모든 기능에서
- 이것은 이미 좋은 방법입니까? 나는 여전히 PDO와 OOP (아직 배울 점이 많다.)에서 새로운 편이다. 그래서 (지금 현재) 나는 거기에서 개선 될 수있는 단점이나 일들을 실제로 볼 수 없다.
try..catch
을 반복 할 필요가없고 그래도 각각 다른 "실패 메시지"를 반환 할 필요가 없음)
불분명하거나 너무 길어서 죄송합니다. 미리 감사드립니다.
두 번째로 pd가 말한 것으로, 커스텀 에러 클래스의 나의 사용법은 단순히 db에 에러를 기록하고 이메일을 보낸다. 최종 사용자는 스택 추적 또는 기타 불만족을 보지 못합니다. 그래서 오류가 있으면 false를 반환 한 다음 내 쿼리의 반환 값을 테스트하여 사용자에게 무엇을 알릴 지 결정합니다. –
SELECT를 변경하거나 SELECT가 더 이상 작동하지 않도록 다른 쿼리가 데이터베이스를 변경 한 경우 당신이 당신 자신의 페이지를 테스트 할 때까지 그것에 대해 알아라. 이것은 비생산적입니다. try/catch는 모든 쿼리에 필요합니다! – mgutt