2012-07-06 3 views
2

저는 수년간 대부분 프로 시저 프로그래밍을 해왔으며 OOP와 PDO에 대한 저의 머리를 감싸하려고했습니다. 내가 작성한 응용 프로그램을 독립 실행 형 함수 대신 클래스를 사용하여 변환하기 시작했습니다 (악몽 같지만 가치가 있다고 생각합니다). 일반 mysql_* 함수 대신 PDO를 사용하고 싶습니다. 나는 바지 시트로 날아 다니고 있는데, 내가 따라갈 때 배우는 것만으로도 PDO 객체 (들)를 어떻게 처리해야하는지 모르겠습니다. 그게 내가 볼 수있는 두 가지 방법으로 잎 있도록모든 개체에 PDO 개체를 전달해야합니까, 아니면 각 개체에 대해 새 개체를 만들어야합니까?

나는,이 객체 내가 쿼리를 만들 필요가 때마다 새로운 PDO를 만들 어리석은 것 알고

  1. 각 클래스의 PDO 객체를 생성 (즉 객체가 생성 될 때마다 멤버 함수를 호출하여 사용할 PDO를 만듭니다.
  2. 응용 프로그램 시작 부분에 PDO 객체를 생성하고 생성 된 모든 객체의 생성자에 전달하면 모든 객체가 PDO 객체를 공유합니다.

가장 적합한 방법은 무엇입니까?

귀하의 조언에 감사드립니다.

+5

확실히 전달해야하며 여러 번 생성해서는 안됩니다. – kapa

답변

2

하나 이상을 쓰지 마십시오. 모든 DB 연결을 관리하려고 미쳤습니다.

하나의 좋은 해결책은 데이터 액세스를 위해 singleton object을 만들고 DB를 사용할 때마다 정적 접근 방법을 통해 검색하는 것이 좋습니다. 그렇게하면 DB 액세스 및 PDO를 관리하는 장소가 하나만 있습니다. 조금 더 MVC이되고 싶다면 모든 SQL 코드를 거기에 넣을 수 있습니다.

1

응용 프로그램의 크기에 따라 데이터베이스 연결을 처리하기 위해 Singleton을 사용하는 것이 좋습니다. 기본적으로이 클래스는 데이터베이스 연결을 래핑하고 PDO 객체를 반환하는 정적 함수를 포함하는 클래스입니다. 그러나 Singleton이기 때문에 하나만 만들게됩니다 (더 정교하게 만들지 않는다고 가정 할 때). 이렇게하면 지속적으로 객체를 만들지 않고 하나의 객체를 모든 객체에 전달하지 않아도되므로 비즈니스 논리에서 지속성을 적절히 분리 할 수 ​​있습니다.

+0

"응용 프로그램의 크기에 따라 다름"이란 무엇을 의미합니까? 당신은 정교 할 수 있습니까? – Nate

+0

특히 부하가 적은 소형 애플리케이션에 대한 싱글 톤 걱정은 과도 할 수 있습니다. 마찬가지로, 더 큰 응용 프로그램은 싱글 톤에서 최상으로 제공 될 수도 있고 그렇지 않을 수도있는 일종의 풀링 메커니즘을 필요로 할 수도 있습니다. 그 전방에 조언을하기 시작할 수 있기 때문에 유스 케이스에 대해 더 많이 알 필요가 있습니다. –

관련 문제