bsPHP v 0.1.2

류상현﻿ 님 덕분에 헬게이트가 열렸습니다 ㅎㅎ

1. define( 'DB_FILE', 'db.json' );
컨벤션에 의해 /가 빠졌습니다.

2. table.json에 인젝션방지여부 추가
기존 필드당 배열은

[밸리데이션, 문자열, 오토, 널허용, 기본값]

이었습니다. 여기에 끝에 하나 더 추가되어

[밸리데이션, 문자열, 오토, 널허용, 기본값, 인젝션방지여부]

가 되었습니다. 실제 평문으로 필드명을 조정한다고 해보죠.

select * from list order by @ord@

정도일것입니다. 그럼 저기에 userid같은걸 보내고 mysql_real_escape_string를 해보면 데이터가 싹날아가버립니다. 그래서 테이블 필드에 맞춘경우는 기본적으로 true고 사용자정의 타입으로 오면 false로 mysql_real_escape_string 적용여부를 결정해야하기 때문에 추가되었습니다.

3. 커스텀 필드 밸리데이션 추가
기존의 쿼리상의 템플릿 구조의 밸리데이션은 오직 아래 형태만 지원했습니다.

@외부이름:테이블.필드명@

하지만 in이나 order by 등에 연동될 템플릿을 생각해보면 값이 아니라서 테이블필드로 밸리데이션할 수 없었습니다. 이를 위해 커스텀 타입을 정의할 수 있게 합니다.

@외부이름:데이터타입:기본값@

예를들어 @ord:none:rowid@ 라고 하면 ord라는 데이터는 딱히 검증할 것은 없고 안오면 기본값은 rowid다 라는 거죠. 이때 올 수 있는 데이터 타입은 다음과 같습니다.

none - 딱히 검사하지 않음
json, string - 작은 따옴표를 붙이는 문자열값임
integer - 정수임( $vali = 'integer' )
double, float - 실수임( $vali = 'decimal' )
null - 널이 들어옴(명시적으로 넘겨야함, $vali = 'bs_null' )

4. bs전용 밸리데이션 추가
3번을 보시다보면 null타입에 대해서 bs_null이란 밸리데이션 규칙이 등장합니다. 기존 ci의 밸리데이션 외에 bs전용 타입은 bs_XXX형태로 기술되고 현재 추가된 항목은 다음과 같습니다.

bs_equal[value] - 해당값과 일치해야함
bs_not[value] - 해당값과 일치하지 말아야함
bs_null - 반드시 널이어야 함

5. table구조에 대한 계층적함수도입
기존의 흐름은 sqlAdd → sqlParse → sqlTable 이었습니다.
이 구조의 문제점은 table정보를 갱신할 방법이 없다는 거죠.
그래서 흐름이

sqlAdd → sqlParse → sqlTable → table2json → tableInfo

라는 두단계가 추가되었고 특히 이중 table2json은 공개된 함수입니다.
이제 테이블 정보가 갱신되면 다음 코드로 json을 갱신할 수 있습니다.

bs::db('local'); //우선디비선택해야지
bs::table2json( 'tableA', 'tableB', 'tableC' ); //세개의 테이블을 갱신

6. query함수 개선
기능적으로 개선된건 없으나 1~5의 변화에 맞춰 내부의 쿼리제네레이트부분이 대규모로 변경되었습니다.