CodeIgniter-기본 개념
컨트롤러
컨트롤러는 간단한 클래스 파일입니다. 이름에서 알 수 있듯이 URI로 전체 애플리케이션을 제어합니다.
컨트롤러 생성
먼저 application/controllers폴더. 거기에 두 개의 파일이 있습니다.index.html 과 Welcome.php. 이 파일은 CodeIgniter와 함께 제공됩니다.
이 파일을 그대로 유지하십시오. 같은 경로에 "Test.php”. 해당 파일에 다음 코드를 작성하십시오-
<?php
class Test extends CI_Controller {
public function index() {
echo "Hello World!";
}
}
?>
그만큼 Test 클래스는 다음과 같은 내장 클래스를 확장합니다. CI_Controller. 이 클래스는 고유 한 Controller 클래스를 만들 때마다 확장되어야합니다.
컨트롤러 호출
위의 컨트롤러는 다음과 같이 URI로 호출 할 수 있습니다.
http://www.your-domain.com/index.php/test
“test”를 index.php 뒤에있는 위의 URI에서. 컨트롤러의 클래스 이름을 나타냅니다. 컨트롤러의 이름을 지정했듯이“Test”, 우리는 "test"index.php 뒤에. 클래스 이름은 다음으로 시작해야합니다.uppercase letter 하지만 우리는 쓸 필요가 있습니다 lowercase letterURI로 컨트롤러를 호출 할 때 컨트롤러를 호출하는 일반적인 구문은 다음과 같습니다.
http://www.your-domain.com/index.php/controller/method-name
생성자 메서드 생성 및 호출
위의 클래스를 수정하고 "hello"라는 다른 메서드를 생성 해 보겠습니다.
<?php
class Test extends CI_Controller {
public function index() {
echo "This is default function.";
}
public function hello() {
echo "This is hello function.";
}
}
?>
위의 컨트롤러를 다음 세 가지 방법으로 실행할 수 있습니다.
- http://www.your-domain.com/index.php/test
- http://www.your-domain.com/index.php/test/index
- http://www.your-domain.com/index.php/test/hello
브라우저에서 첫 번째 URI를 방문하면 아래 그림과 같은 출력이 표시됩니다. 보시다시피, 우리는“index”, 비록 우리가 URI 메소드의 이름을 전달하지 않았음에도 불구하고. URI에는 컨트롤러 이름 만 사용했습니다. 이러한 상황에서 CodeIgniter는 기본 메서드 "index”.
브라우저에서 두 번째 URI를 방문하면 위의 그림에 표시된 것과 동일한 출력이 표시됩니다. 여기서는 URI에서 컨트롤러 이름 뒤에 메서드 이름을 전달했습니다. 방법의 이름은 "index”, 우리는 동일한 결과를 얻고 있습니다.
브라우저에서 세 번째 URI를 방문하면 아래 그림과 같이 출력이 표시됩니다. 보시다시피, 우리는“hello”우리는“hello""컨트롤러 이름 뒤에 메서드 이름으로 "test”를 입력합니다.
기억해야 할 사항
컨트롤러 클래스의 이름은 대문자로 시작해야합니다.
컨트롤러는 소문자로 호출해야합니다.
부모 클래스의 기능을 재정의하므로 부모 클래스와 동일한 메서드 이름을 사용하지 마십시오.
견해
이것은 컨트롤러가 호출 할 수있는 단순하거나 복잡한 웹 페이지 일 수 있습니다. 웹 페이지에는 머리글, 바닥 글, 사이드 바 등이 포함될 수 있습니다.보기를 직접 호출 할 수 없습니다. 간단한보기를 만들어 보겠습니다. 아래에 새 파일 만들기application/views 이름 "test.php”하고 해당 파일에 아래 주어진 코드를 복사하십시오.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "utf-8">
<title>CodeIgniter View Example</title>
</head>
<body>
CodeIgniter View Example
</body>
</html>
코드 변경 application/controllers/test.php 아래 그림과 같이 파일.
보기로드
보기는 다음 구문으로로드 할 수 있습니다-
$this->load->view('name');
여기서 name은 렌더링되는 뷰 파일입니다. 뷰 파일을 어떤 디렉토리에 저장할 계획이라면 다음 구문을 사용할 수 있습니다.
$this->load->view('directory-name/name');
.php가 아닌 다른 것을 사용하지 않는 한 확장자를 php로 지정할 필요는 없습니다.
index () 메서드는 view 메서드를 호출하고 "test"를 view () 메서드에 대한 인수로 전달합니다. html 코딩을 "test.php”파일 아래에 application/views/test.php.
<?php
class Test extends CI_Controller {
public function index() {
$this->load->view('test');
}
}
?>
다음은 위 코드의 출력입니다.
다음 순서도는 모든 것이 어떻게 작동하는지 보여줍니다.
모델
모델 클래스는 데이터베이스의 정보와 함께 작동하도록 설계되었습니다. 예를 들어, CodeIgniter를 사용하여 애플리케이션의 사용자를 관리하는 경우 사용자 데이터를 삽입, 삭제, 업데이트 및 검색하는 함수가 포함 된 모델 클래스가 있어야합니다.
모델 클래스 생성
모델 클래스는 application/models예배 규칙서. 다음 코드는 CodeIgniter에서 모델 클래스를 만드는 방법을 보여줍니다.
<?php
Class Model_name extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
여기서 Model_name은 제공하려는 모델 클래스의 이름입니다. 각 모델 클래스는 CodeIgniter의 CI_Model 클래스를 상속해야합니다. 모델 클래스의 첫 글자는 대문자 여야합니다. 다음은 사용자의 모델 클래스에 대한 코드입니다.
<?php
Class User_model extends CI_Model {
Public function __construct() {
parent::__construct();
}
}
?>
위 모델 클래스는 User_model.php로 저장해야합니다. 클래스 이름과 파일 이름은 동일해야합니다.
로드 모델
컨트롤러에서 모델을 호출 할 수 있습니다. 다음 코드를 사용하여 모든 모델을로드 할 수 있습니다.
$this->load->model('model_name');
여기서 model_name은로드 할 모델의 이름입니다. 모델을로드 한 후 아래와 같이 간단히 메서드를 호출 할 수 있습니다.
$this->model_name->method();
자동 로딩 모델
애플리케이션 전체에서 일부 모델 클래스가 필요한 상황이있을 수 있습니다. 이러한 상황에서는 자동로드하는 것이 좋습니다.
/*
| ---------------------------------------------------------------
| Auto-Load Models
| ---------------------------------------------------------------
| Prototype:
|
| $autoload['model'] = array('first_model', 'second_model');
|
| You can also supply an alternative model name to be assigned
| in the controller:
|
| $autoload['model'] = array('first_model' => 'first');
*/
$autoload['model'] = array();
위의 그림과 같이 시스템이 초기화 상태에 있고 애플리케이션 전체에서 액세스 할 수있는 동안 자동로드하려는 배열의 모델 이름을 전달하면 자동로드됩니다.
도우미
이름에서 알 수 있듯이 시스템을 구축하는 데 도움이됩니다. 다양한 기능을 제공하기 위해 작은 기능으로 나뉩니다. 아래 표에 나열된 CodeIgniter에서 여러 도우미를 사용할 수 있습니다. 우리도 우리 자신의 도우미를 만들 수 있습니다.
도우미는 일반적으로 system/helpers, 또는 application/helpers directory. 사용자 지정 도우미는application/helpers 디렉토리 및 시스템의 도우미는 system/helpers예배 규칙서. CodeIgniter는application/helpers directory. 디렉토리가 없거나 지정된 도우미가 없으면 CodeIgniter가 대신 전역system/helpers/ directory. 각 도우미는 사용자 지정이든 시스템 도우미이든 사용하기 전에로드해야합니다.
SN | 도우미 이름 및 설명 |
---|---|
1 | Array Helper 배열 도우미 파일에는 배열 작업을 지원하는 함수가 포함되어 있습니다. |
2 | CAPTCHA Helper CAPTCHA Helper 파일에는 CAPTCHA 이미지 생성을 지원하는 기능이 포함되어 있습니다. |
삼 | Cookie Helper 쿠키 도우미 파일에는 쿠키 작업을 지원하는 기능이 포함되어 있습니다. |
4 | Date Helper 날짜 도우미 파일에는 날짜 작업에 도움이되는 함수가 포함되어 있습니다. |
5 | Directory Helper 디렉토리 도우미 파일에는 디렉토리 작업을 지원하는 기능이 포함되어 있습니다. |
6 | Download Helper 다운로드 도우미를 사용하면 데스크탑에 데이터를 다운로드 할 수 있습니다. |
7 | Email Helper 이메일 도우미는 이메일 작업을위한 몇 가지 보조 기능을 제공합니다. 보다 강력한 이메일 솔루션은 CodeIgniter의 이메일 클래스를 참조하십시오. |
8 | File Helper 파일 도우미 파일에는 파일 작업을 지원하는 기능이 포함되어 있습니다. |
9 | Form Helper 양식 도우미 파일에는 양식 작업을 지원하는 기능이 포함되어 있습니다. |
10 | HTML Helper HTML 도우미 파일에는 HTML 작업을 지원하는 기능이 포함되어 있습니다. |
11 | Inflector Helper Inflector Helper 파일에는 단어를 복수, 단수, 카멜 케이스 등으로 변경할 수있는 함수가 포함되어 있습니다. |
12 | Language Helper 언어 도우미 파일에는 언어 파일 작업을 지원하는 기능이 포함되어 있습니다. |
13 | Number Helper 숫자 도우미 파일에는 숫자 데이터 작업에 도움이되는 함수가 포함되어 있습니다. |
14 | Path Helper 경로 도우미 파일에는 서버에서 파일 경로로 작업 할 수있는 기능이 포함되어 있습니다. |
15 | Security Helper 보안 도우미 파일에는 보안 관련 기능이 포함되어 있습니다. |
16 | Smiley Helper Smiley Helper 파일에는 스마일 (이모티콘)을 관리 할 수있는 기능이 포함되어 있습니다. |
17 | String Helper 문자열 도우미 파일에는 문자열 작업을 지원하는 함수가 포함되어 있습니다. |
18 | Text Helper 텍스트 도우미 파일에는 텍스트 작업을 지원하는 기능이 포함되어 있습니다. |
19 | Typography Helper Typography Helper 파일에는 의미 상 관련있는 방식으로 텍스트 서식을 지정하는 데 도움이되는 함수가 포함되어 있습니다. |
20 | URL Helper URL 도우미 파일에는 URL 작업을 지원하는 기능이 포함되어 있습니다. |
21 | XML Helper XML 도우미 파일에는 XML 데이터 작업을 지원하는 함수가 포함되어 있습니다. |
도우미로드
다음과 같이 도우미를로드 할 수 있습니다.
$this->load->helper('name');
여기서 name은 도우미의 이름입니다. 예를 들어, URL 도우미를로드하려면 다음과 같이로드 할 수 있습니다.
$this->load->helper('url');
라우팅
CodeIgniter는 사용자 친화적 인 URI 라우팅 시스템을 갖추고있어 URL을 쉽게 다시 라우팅 할 수 있습니다. 일반적으로 URL 문자열과 해당 컨트롤러 클래스 / 메서드 간에는 일대일 관계가 있습니다. URI의 세그먼트는 일반적으로이 패턴을 따릅니다.
your-domain.com/class/method/id/
그만큼 first segment 호출해야하는 컨트롤러 클래스를 나타냅니다.
그만큼 second segment 호출해야하는 클래스 함수 또는 메서드를 나타냅니다.
그만큼 third및 추가 세그먼트는 컨트롤러에 전달 될 ID 및 변수를 나타냅니다.
경우에 따라이 기본 라우팅 메커니즘을 변경할 수 있습니다. CodeIgniter는 자신 만의 라우팅 규칙을 설정할 수있는 기능을 제공합니다.
라우팅 규칙 사용자 지정
이 모든 것을 처리 할 수있는 특정 파일이 있습니다. 파일은 application / config / routes.php에 있습니다. 라우팅 규칙을 사용자 지정할 수있는 $ route라는 배열을 찾을 수 있습니다. $ route 배열의 키는 라우팅 할 대상을 결정하고 값은 라우팅 할 위치를 결정합니다. CodeIgniter에는 세 개의 예약 된 경로가 있습니다.
SN | 예약 된 노선 및 설명 |
---|---|
1 | $route['default_controller'] 이 경로는 URI에 데이터가없는 경우로드되어야하는 컨트롤러 클래스를 나타내며, 이는 사람들이 루트 URL을로드하는 경우에 해당합니다. 기본 경로를 사용하는 것이 좋습니다. 그렇지 않으면 기본적으로 404 페이지가 나타납니다. 여기에서 웹 사이트의 홈페이지를 설정하여 기본적으로로드되도록 할 수 있습니다. |
2 | $route['404_override'] 이 경로는 요청 된 컨트롤러를 찾을 수없는 경우로드되어야하는 컨트롤러 클래스를 나타냅니다. 기본 404 오류 페이지를 재정의합니다. 그것은 영향을 미치지 않을 것입니다show_404() 기본값을 계속로드합니다. error_404.php 파일 application/views/errors/error_404.php. |
삼 | $route['translate_uri_dashes'] 부울 값에서 알 수 있듯이 이것은 정확히 경로가 아닙니다. 이 옵션을 사용하면 컨트롤러 및 메서드 URI 세그먼트에서 대시 ( '-')를 밑줄로 자동 대체 할 수 있으므로 필요한 경우 추가 경로 항목을 저장할 수 있습니다. 이는 대시가 유효한 클래스 또는 메소드 이름 문자가 아니기 때문에 필요하며이를 사용하려고하면 치명적인 오류가 발생합니다. |
경로는 다음과 같이 사용자 지정할 수 있습니다. wildcards 또는 사용하여 regular expressions 그러나 라우팅에 대한 이러한 사용자 지정 규칙은 예약 된 규칙 뒤에 와야합니다.
와일드 카드
아래에 설명 된대로 두 개의 와일드 카드 문자를 사용할 수 있습니다.
(:num) − 숫자 만 포함 된 세그먼트와 일치합니다.
(:any) − 모든 문자를 포함하는 세그먼트와 일치합니다.
Example
$route['product/:num']='catalog/product_lookup';
위의 예에서 리터럴 단어 "product"가 URL의 첫 번째 세그먼트에서 발견되고 숫자가 두 번째 세그먼트에서 발견되면 "catalog"클래스 및 "product_lookup"메소드가 대신 사용됩니다.
정규식
와일드 카드와 마찬가지로 정규 표현식을 $route array key부품. 정규식과 일치하는 URI가 있으면 $ route 배열에 설정된 값 부분으로 라우팅됩니다.
Example
$route['products/([a-z]+)/(\d+)']='$1/id_$2';
위의 예에서 products / shoes / 123과 유사한 URI는 대신 'shoes”컨트롤러 클래스 및“id_123”방법.