일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- sourceSet
- git cannot identify version of git executable
- nextFocusDown
- docker에서 mysql 실행
- TextView 일부분
- junit
- 다음으로 이동
- Linux 패키지 관리자
- 안드로이드 자동으로 포커싱
- InvalidTestClassError
- php
- MySQL
- 팝업 바깥 레이어
- git
- 5회 인증
- AWS
- Execution failed for task ':test'.
- mac 패키지 관리자
- Github Token
- Chat GPT
- Android Flavor
- Android Studio
- XML Opacity
- 여러 개
- Github 등록
- 챗지피티
- codeigniter
- 챗GPT
- Location Permission
- PHP Storm
- Today
- Total
128june
[Codeigniter] MVC 모델 - Controller에 대해서 본문
Codeigniter을 설치하지 않으신 분은 Codeigniter 설치하기 [윈도우 64bit]를 참조해주세요!
1. Controller - index()
application/controllers 폴더에 Board.php라는 파일을 만들어봅니다.
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Board extends CI_Controller {
public function index()
{
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'hello everybody';
}
}
이 경우 localhost/index.php/board 또는 localhost/index.php/board/index 링크를 통해 다음과 같이 출력됩니다.
2. Controller - index() / juneWorld()
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Board extends CI_Controller {
public function index()
{
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'hello everybody';
}
public function juneWorld(){
echo '<head>';
echo '<meta charset=\'utf-8\'>';
echo '</head>';
echo 'Welcome June World!';
}
}
이렇게 함수가 두 개 있는 경우 -> http://localhost/index.php/board/ 의 하위로 다음과 같은 두 링크가 생깁니다.
3. 이제 model을 연결해봅니다.
먼저 application/controllers 폴더에 Main.php를 만듭니다.
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Main extends CI_Controller {
function __construct() {
parent::__construct();
}
//index 함수 => "URL/index.php/main" or "URL/index.php/main/index"로 설정
public function index() {
// $this->load->model : /application/models 폴더를 탐색
// model('[modelfile]') : model에는 /application/models에 있는 Main_model.php를 설정
// $this->Main_model->test();는 로드된 Main_model.php의 test 함수를 실행
$this->load->model('Main_model');
$this->Main_model->test();
}
}
index 함수에서 $this 변수가 ( -> ) load를 하는데 ( -> ) 무엇을 하냐? model('Main_model')을 load합니다.
load를 했으니 모델 안에 있는 함수인 test()를 가져다 사용하는 것으로 index 함수의 행동이 끝납니다.
다음은 application/models 폴더에서 Main_model.php를 만듭니다.
<?php defined('BASEPATH') OR exit('No direct script access allowed');
class Main_model extends CI_model {
function __construct(){
parent::__construct();
//database.php 파일에서 $test(database이름)['test(table이름)'] 설정값 load
$this->test = $this->load->database('default', TRUE);
}
function test() {
// Database에 query 요청
$query = $this->test->query("SELECT * FROM test");
foreach ($query->result_array() as $row)
{
echo '번호 : ', $row['num'];
echo '<br>';
echo '제목 : ', $row['title'];
echo '<br>';
}
}
}
먼저 생성자 __construct()를 불러옵니다.
Controller 에서 $this->load->model('Main_model');를 먼저 실행했으니
▶ 생성자를 부르면서 database의 'default'값을 load하고 이를 test에 담습니다.
다음으로 $this->Main_model->test();가 실행되면서
▶ Model의 함수 test()가 실행되고 database에 query가 요청되면서 다음을 출력합니다.
1. 이처럼 Controller에 담겨있는 함수들을 통해서 주소가 Mapping됩니다.
2. 해당하는 주소에 Model의 데이터, 즉 query를 요청하여 data를 받아오고
3. 이후 View에 전달함으로써 전달한 Data로 View에서 출력을 하는 구조가 MVC 모델입니다.
댓글로 틀리거나 수정할 부분을 알려주시면 수정하겠습니다.
감사합니다!!
'JetBrain > PHP Storm & Codeigniter' 카테고리의 다른 글
[PHP Storm] 단축키 정리 (0) | 2020.06.10 |
---|---|
[Codeigniter] 기본적인 MVC 모델 구현 (0) | 2020.06.08 |
[Codeigniter] Database 설정하기 (Mysql 5.7) (0) | 2020.06.05 |
PHP Storm과 Mysql(AWS EC2) 연결 (2) | 2020.06.04 |
Codeigniter 설치하기 [윈도우 64bit] (0) | 2020.06.03 |