ThinkPHP 소개
ThinkPHP는 PHP로 개발된 빠르고 간단한 객체 지향 경량 프레임워크입니다. 이 문서에서는 ThinkPHP v5.0.14을 기준으로 설명합니다.
프로젝트 구조
project 애플리케이션 배포 디렉토리 ├─application 애플리케이션 디렉토리 │ ├─common 공통 모듈 디렉토리 │ ├─index 모듈 디렉토리 │ │ ├─controller 컨트롤러 디렉토리 │ │ ├─view 뷰 디렉토리 │ ├─config.php 설정 파일 │ ├─database.php 데이터베이스 설정 파일 ├─public 웹 서버의 루트 디렉토리 │ ├─index.php 엔트리 포인트 파일 ├─runtime 애플리케이션 실행 시 생성되는 임시 파일 저장소 └─vendor 외부 패키지 저장소 (Composer)
기본 설정
엔트리 파일은 public/index.php에 위치하며, 여기서 모든 요청이 처리됩니다. 데이터베이스 설정은 application/database.php에서 관리됩니다.
URL 접근
ThinkPHP 프로젝트의 URL 접근 규칙은 두 가지가 있습니다:
http://serverName/index.php/모듈/컨트롤러/액션/[파라미터명/파라미터값...]http://serverName/index.php?s=/모듈/컨트롤러/액션/[파라미터명/파라미터값...]
변수 획득
ThinkPHP에서는 Request 객체를 통해 다양한 입력 변수를 안전하게 처리할 수 있습니다. 예제 코드는 다음과 같습니다:
class Sample {
public function getVar() {
// GET 파라미터 가져오기
$value = request()->param('key');
return 'GET 파라미터 값: '.$value;
}
}
데이터베이스 작업
ThinkPHP의 Db 클래스를 이용하면 SQL 문장을 쉽게 작성하고 실행할 수 있습니다. 예제는 다음과 같습니다:
class DataOp {
public function queryData() {
// 원시 SQL 실행
$result = Db::query("SELECT * FROM users WHERE id = ?", [request()->param('id')]);
dump($result);
// SQL 생성자 사용
$result = Db::table('users')->where('id', request()->param('id'))->find();
dump($result);
}
}
템플릿 엔진 호출
ThinkPHP는 내장 템플릿 엔진을 제공합니다. 아래는 간단한 예제입니다:
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>{$pageTitle}</title>
</head>
<body>
<p>{$message}</p>
</body>
</html>
use think\Controller;
class TemplateDemo extends Controller {
public function showTemplate() {
$this->assign('pageTitle', '데모 페이지');
$this->assign('message', '환영합니다!');
return $this->fetch('template');
}
}
보안 고려 사항
SQL 인젝션 방지를 위해 항상 Db 클래스를 사용하여 SQL 문장을 구성해야 합니다. 직접 SQL 문자열을 조합하는 것은 피해야 합니다.