사실 PHP에 데이터베이스 래퍼가 필요한 이유가 궁금합니다. MySQLi 또는 PDO 용 래퍼와 비슷합니다. PDO/MySQLi 클래스를 호출하는 클래스입니다. 왜 내가 그것을 필요로해야합니까? 이점? 나는 하나를 만들려고 노력할 것입니다. 단지 주된 목표를 얻지 못합니다. 왜 내가 그것을 필요로합니까 ?? =]왜 데이터베이스 래퍼를 만들어야합니까?
답변
PDO
과 같은 추상화는 더 안전하게하기위한 것입니다. 당신은 당신이 원하는 데이터베이스 실행이 이런 일을 방지 할 것을 의미하는 "강력한 형식"될 것이라고 말할 수 있습니다 :
$myDangerousSql = "select * from dbA where x ='"+$someVariable+"'";
위 sql-injection이라는 것을 될 수 있습니다.
PDO
을 사용할 때 "x는 유형 문자열입니다"또는 데이터베이스에서 사용하는 유형을 명시 적으로 말합니다. 이런 식으로 문은 "준비"될 수 있으므로 새로운 SQL 코드를 SQL 문에 "삽입"할 수 없습니다. 어느 것이 더 안전합니다.
이것은 이유 중 하나 일 뿐이지 만 가장 큰 이유 중 하나 일 가능성이 큽니다. 학습 목적이 아닌 경우 자체 래퍼/추상화를 작성하지 마십시오. 이미 많은 좋은 것들이 있습니다.
다음은 Database abstraction in PHP에 관한 좋은 소식입니다.
나는 당신이 여기에서 묻고있는 것이 명확하지 않다. 하지만 나는 PDO가 이미 당신이 말하는 것을 가정 할 것입니다, 그것은 "data-access abstraction layer"입니다. 이것은 동일한 코드를 사용하여 다양한 DBMS와 대화 할 수 있고 코드를 변경하지 않고도 쉽게 전환 할 수 있다는 것을 의미합니다 (SQL을 사용하면 SQL을 제공합니다). 당신이 전환하는 것과 호환됩니다.)
MySQLi는 MySQL 데이터베이스에 직접 액세스하는 데 사용되는 확장이며, Oracle 및 기타 DBMS 확장도 가능합니다.
답장을 보내 주셔서 감사합니다. 위를보세요. =] – daGrevis
그래, 시작했을 때 거기에 없었어! –
적어도 두 가지 이유가있을 수 있습니다. 1) 리팩토링. 기술 변화로 인해 필요한 변경 사항을 현지화하기 위해 노력해야합니다 (위험없이 신속하게 수행하기 위해). 몇 년 전에는 MySQLi 나 PDO가 없었습니다. 고전적인 MySQL 확장을위한 래퍼를 개발했다면 모든 래퍼 클라이언트를 변경하지 않고도 PDO로 쉽게 전환 할 수있었습니다. 반면에 mysql_connect()
에서 mysqli_connect()
으로 수백 건의 전화를 대체하는 것은 그렇게 매력적이지 않습니다.
2) 테스트 가능성. 자동화 된 테스트를 실습하고 간접 참조 (래퍼) 계층을 추가하면 쉽게 가짜 테스트로 대체 할 수 있습니다. 따라서 쿼리가 실제로 데이터베이스로 이동하는지 또는 예를 들어 파일에 기록되는지 여부를 제어 할 수 있습니다. 그 결과 더 빠르고 관리하기 쉬운 테스트가 가능합니다.
PDO 위에 래퍼를 사용하려면 하나를 쓰지 마십시오. 이미 많이 작성되었습니다. 당신은 Doctrine, ActiveRecord, Zend_Db 등을 가졌습니다.
- 1. 왜 여러 개의 wx.Panel을 만들어야합니까?
- 2. 유한 상태 기계를 만들어야합니까?
- 3. 왜 sqlite 데이터베이스를 쿼리 할 때 커서를 만들어야합니까?
- 4. 왜 IDL의 모든 인터페이스에 대해 고유 한 uuid를 만들어야합니까?
- 5. 왜 뷰에 넣은 각 요소에 대해 RelativeLayout.LayoutParams의 새로운 세트를 만들어야합니까?
- 6. 스프라이트에 어떤 버텍스를 만들어야합니까?
- 7. 내 JAXB 객체 래퍼를 비평합니다.
- 8. 래퍼를 사용하는 PHP 함수
- 9. Java 래퍼를 데몬으로 사용
- 10. 래퍼를 관리되지 않는 코드
- 11. 왜 MySQL 데이터베이스 스키마가 필요합니까?
- 12. 왜 여러 데이터베이스 모델이 있습니까?
- 13. 어떻게 플러그인을 Firefox에 만들어야합니까?
- 14. 엔티티 개체는 어디에 만들어야합니까?
- 15. 여러 클래스를 만들어야합니까?
- 16. 이 열에 인덱스를 만들어야합니까?
- 17. EntityManager를 얼마나 자주 만들어야합니까?
- 18. 직사각형을 그리려면 뷰를 만들어야합니까?
- 19. jquery 플러그인은 언제 만들어야합니까?
- 20. 자신의 DLL을 언제 만들어야합니까?
- 21. 개발 블로그는 어디에 만들어야합니까?
- 22. 새 Repo 방법을 만들어야합니까?
- 23. 이 상황에서 ImageHelper를 만들어야합니까?
- 24. 언제 새로운 활동을 만들어야합니까?
- 25. 이 엔터티 주위에 래퍼를 작성해야합니까?
- 26. BOOL 래퍼를 나타내는 방법은 무엇입니까?
- 27. 언제 포토샵을 사용하여 웹 페이지를 만들어야합니까?
- 28. 왜 모델에서 데이터베이스 제약 조건을 반복합니까?
- 29. mysql 데이터베이스 타임 스탬프 자체가 왜 변경됩니까?
- 30. 주석에 대한 상수 클래스를 만들어야합니까?
짧은 답변 : 그렇지 않습니다. –
PDO는 이미 래퍼입니다. 클래스를 확장하여 필요하고 제공되지 않는 몇 가지 사항을 추가 할 수 있지만, 그렇지 않은 경우에는 처음부터 직접 래퍼를 작성하는 것이 매우 큰 작업입니다. –