1

주제: mysql 부분만 클래스화 시켜보았습니다.

[파일이 올라가는지 확인이 안되어서(또는 사용할줄 모르거나) 영자님에게 이메일로 보냈습니다.]

하루종일 삽질해서 mysql 부분만 클래스화 시켜보았습니다.
이것은 추후 db만 다른것으로 바꿀 가능성과

가독성 및 추후 프로시저를 쓸 경우를 대비하기 위함입니다.
더 큰 목적은 운영진에게 db부분의 클래스를 강제하기 위한 압박^^이라고 볼 수 있습니다.

setup.php만 건드리지 않았고 전체적으로 다 소스가 건드려진 상태입니다.
설치하면 기본 시스템은 원본대로 돌아가나..다른 개발자가 만든 플러그인은 손을 보셔야 합니다.

뭐 2가지만 하시면 됩니다.
함수내에 global $_tdb 삽입, 데이타베이스를 콜할때는 $_tdb->함수면 이런식으로 교체

삽질 순서...
1. eolin.php.core의 class DBQuery, class TableQuery 를 mysql.php로 이동
   추후 다른 database를 지원할 경우 데이타베이스이름.php를 인클루드하기 위함...

2. DBQuery 클래스를 ydb 클래스로 이름변경
   midas라는 평션추가 database.php를 보면  $_tdb=& ydb::midas() 로 한번호출

   함수내에서 사용하기 위해서는 global $_tdb 정의하면 됨
   각종 함수내에서서는 $_tdb->query($sql) 이런식으로 호출됨...

   함수로 제공되던 것을 클래스내로 흡수
   fetchQueryRow
   mysql_lesson 을 이름변경하여 흡수 lessen
   mysql_affected_rows -> affected_rows
   mysql_tt_escape_string -> tt_escape_string
   mysql_multi_query(그대로 사용)
   escapeMysqlSearchString(그대로 사용)
   mysql_free_result -> close(& $result) 변수를 넘겨줄때 포인터를 넘겨줌
   mysql_result -> myresult
   doesExistTable(그대로 사용)
   mysql_num_rows -> num_rows
   mysql_fetch_array -> fetch_array
   mysql_fetch_assoc -> fetch_assoc

   mysql_fetch_row -> fetch_row

   추가된 함수
   executeid insert후 프리마리키값 반환
   executerows 실행후 처리된 레코드수 반환

이선경 (2007-07-08 19:56:20)에 의해 마지막으로 수정

2

답글: mysql 부분만 클래스화 시켜보았습니다.

DB 관련해서는 예전의 '묻지마 mysql쿼리'에서 현재는 일부를 제외하면 DBQuery기반이고, TableQuery를 사용하는 방식으로 모두 변경하고 있는 중입니다. (2.0쯤이면 완료될 듯?)

이렇게 되면 위의 encapsulation이 대부분 필요하지 않게 될 것이고, 단지 TableQuery 클래스의 재작성 만으로도 데이터베이스 입출력을 할 수 있게 되겠지요. Eolin.PHP.Core의 경우 현재 TC에 든 버전 말고 mySQL의 버전에 따라 최적화된 버전도 존재합니다.^^

모든 쿼리의 TableQuery 클래스로의 이전을 '함께 삽질'하기 위해서 TableQuery의 문법에 대해서 한 번 정리를 할 시점도 된 듯 하네요. smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

3

답글: mysql 부분만 클래스화 시켜보았습니다.

inureyes 작성:

DB 관련해서는 예전의 '묻지마 mysql쿼리'에서 현재는 일부를 제외하면 DBQuery기반이고, TableQuery를 사용하는 방식으로 모두 변경하고 있는 중입니다. (2.0쯤이면 완료될 듯?)

이렇게 되면 위의 encapsulation이 대부분 필요하지 않게 될 것이고, 단지 TableQuery 클래스의 재작성 만으로도 데이터베이스 입출력을 할 수 있게 되겠지요. Eolin.PHP.Core의 경우 현재 TC에 든 버전 말고 mySQL의 버전에 따라 최적화된 버전도 존재합니다.^^

모든 쿼리의 TableQuery 클래스로의 이전을 '함께 삽질'하기 위해서 TableQuery의 문법에 대해서 한 번 정리를 할 시점도 된 듯 하네요. smile

지금 커뮤니티에서 postgres로의 이전을 심각하게 논의중이라서..
(뭐 다중 cpu환경에서 조타나..어쨋다나) .
기다리지 못하고 어쩔수 없이 영자님을 압박하는 방법을 구사하게 된 것입니다..

아무래도 2.0이 나올려면 시간이 걸릴것 같은데....
빠른 시일내에 TableQuery기반 테터툴즈를 보았으면 합니다.

아니면 mysql를 호출하는 방식과 문법에 대해서 발표하는 방식으로 사용자가 우회해서 사용할 수 있는 방법이라도 가르쳐 주시면 좋겠습니다.
그러면 나중에 2.0버전이 나와도 또다시 삽질하는 않는...은혜를 ...내려 주소서...