CodeIgniter 4에서는 namespace 를 사용합니다.


그렇기에 기존 코드이그나이터 2, 3버전의 방식으로는 Controller 를 확장하는것이 불가능합니다.


기존에는 application/core/MY_Controller.php 방식으로 컨트롤로의 확장이 가능했는데..


코드이그나이터4는 application/Libraries/Controller.php 에서 확장이 가능합니다.


<?php namespace App\Libraries; use CodeIgniter\HTTP\RequestInterface; use CodeIgniter\HTTP\ResponseInterface; use Config\Logger;
class Controller extends \CodeIgniter\Controller { }


파일을 생성해서 위와같이 코드를 작성합니다.


사진의 6라인에 use Config\Services; 가 있는 이유는, 26라인의 $this->view = Services::theme(); 를 사용하기위해서입니다.


그리고 application/Controllers/Test.php 컨트롤러를 작성합니다.



확장을 하지 않으면 아래와 같이 작성을 합니다.


<?php class Blog extends \CodeIgniter\Controller
{
        public function index()
        {
                echo 'Hello World!';
        }
}


위의 코드는 도큐멘트에 있는 예제입니다.


하지만 저는 코드이그나이터4의 기본 코어를 그대로 사용하는게 아닌, 확장하여 사용할것이기 때문에, 코드가 살짝 달라집니다.


<?php namespace App\Controllers;
use App\Libraries\Controller;
class Test extends Controller {
public function index () {
}
}


일단 class니까 namespace 선언을 namespace App\Controllers; 해줍니다.


그리고 확장한 컨트롤러를 사용할거니까..


use App\Libraries\Controller; 를 넣어줍니다.


컨트롤러를 확장해서 사용하는거니까..


class Test extends Controller {}


로 선언을 해주시면 됩니다.


저는 Test 컨트롤러를 생성했습니다.


이렇게 해주시면 확장한 컨트롤러를 사용할 수 있습니다.


컨트롤러를 확장하는 이유는..


현재로서는 헬퍼의 자동 로드네요.



제가 작성한 코드를 보시면 20 ~ 21라인에 $this->helpers[] = '헬퍼명'; 이 있습니다.


코드이그나이터 2, 3버전에서는 application/config/autoload.php 에서 설정하면 자동으로 로드해줬으나..


코드이그나이터4는 컨트롤러에서 자동로드합니다.


system/Controller.php 파일을 열어보시면, 99 ~ 122 라인이 초기 설정 라인인데..



코드를 잘 보시면 121라인에서 $this->loadHelpers(); 하는걸 볼 수 있습니다.



동일파일 156 ~ 168 라인을 보시면 해당 함수가 있는데..


컨트롤러의 helpers 변수에 넣어진 헬퍼들을 자동으로 로드해줍니다.


즉, 헬퍼를 매번 로드하는게 귀찮으신분은 컨트롤러를 확장해서..


parent::__construct($request, $response, $logger);


가 오기전에 헬퍼를 변수에 아래와 같이 넣어주시면 됩니다.


$this->helpers[] = 'html';


그러면 모든 페이지에서 html 헬퍼를 불러올 수 있습니다.


저는 html 헬퍼를 불러오는 이유가, 다음번글에 작성하겠지만, doctype(); 함수를 쓰기 위해 불러오고 있습니다.


제 코드상의 $this->helpers[] = 'common'; 는 직접 제작한 헬퍼입니다.


헬퍼의 제작은 기존과 동일하게 application/Helpers/common_helper.php 처럼 가능합니다.

Posted by Pure Ani

RE:D Cherish! -Eternity Blood- CRYSTALiA

放課後シンデレラ2 HOOKSOFT

花鐘カナデ*グラム NanaWind

フタマタ恋愛 ASa Project

スタディ§ステディ2 ま~まれぇど

リンパにATATA! ~メス牡蠣ミルクどぴゅらっしゅ~ Hending

創作彼女の恋愛公式 Aino+Links

流星ワールドアクター Heliodor

Secret Agent~騎士学園の忍びなるもの~ ensemble

天冥のコンキスタ エウシュリー

HaremKingdom -ハーレムキングダム- SMEE

ラズベリーキューブ まどそふと

ノラと皇女と野良猫ハート2 -Nora, Princess, and Crying Cat.- HARUKAZE

『ノラと皇女と野良猫ハート2』応援中♪

ピュアソングガーデン PULLTOP

はにデビ! Honey&Devil eufonie

姫繰三六五 HIMEKURI365

姫繰三六五 公式ウェブサイト

はるるみなもに! クロシェット

死に逝く君、館に芽吹く憎悪 バグシステム

Sanguinea-サングイネア- すにぃる

麗華の館 しすたーそふと

カスタムメイドオンライン KISS