PHP에서 SQL 쿼리를 생성하기 위해 moduleSelectQuery
클래스를 사용하고 있습니다.PHP에서 재귀 적 속성을 가진 객체
는 기본적으로,이 클래스는, 필드가 선택 같은 테이블 이름과 같은 SQL SELECT 쿼리의 개별 구성 요소를 나눕니다의 WHERE 조건 등 그러나이 빠르게 중첩 된 쿼리와 복잡하게
, WHERE table1.field1 IN (SELECT table2.field2 from table2 WHERE table2.field3 = criteria)
현재 절을 저장하는 데 사용되는 $inWhereClause
이라는 속성이 있습니다. 다른 속성 (예 : $tableName, $whereClause, $havingClause
)과 마찬가지로 사용자 입력을 기반으로 자체 함수에 의해 함께 구문 분석됩니다.
그러나이 파싱 기능은 근본적으로 제한되어 있습니다. $whereClause
속성을 구문 분석 할 때 충분한 노력을 기울일지라도 추가 중첩 SELECT 문을 사용할 수 없습니다.
나는 이것을 수행하는 한 방법이 을 또 다른 moduleSelectQuery
개체로 설정하는 것이라고 생각합니다. 이는 부모 moduleSelectQuery
이 그 자체가 moduleSelectQuery
인 속성을 가짐을 의미합니다. 즉, 재귀 객체입니다. 이것이 PHP에서 가능한가/좋은 습관인가? 다른 결점이 있습니까?
부모의 확장 된 하위 개체? 아마도 그것을 변경하여 부모 개체의 자식으로 select 문을 만들어서 "최종"문을 작성하는 objcet을 변경하여 자식을 여러 번 호출하여 기본 선택과 하위 선택을 만든 다음 병합합니다. 다시 기본 개체에. 아마도 쿼리 템플릿을 작성하기 위해 어떤 형식의 팩토리와 함께 사용할 수 있습니다. 나는 방금 ofc 아이디어를 내뿜고있다. – Dave