2010-06-14 3 views
5

나는 (그것들을 열거 형으로 사용하고있는) 상수 목록을 가지고 있으며, 어떤 것은 정의 문이고 일부는 전역 변수이다.Codeigniter (PHP)에 대한 상수 파일은 어디에 두어야하나요?

MVC 프레임 워크에 이들 모델을 넣으면 모델과 컨트롤러를 참조해야합니다.

이 모델과이 모델을 사용하는 컨트롤러를 제외하고는 호출해서는 안되기 때문에 config/constants.php에 붙이지 않을 것입니다.

편집 1 : 명확한 설명

더 구체적으로, 내 message_model 모델을 가지고 그리고 내가 message_model_constants.php에 저장되는 필요 상수의 무리가 있습니다. 어디서 message_model_constants.php을 넣어야하고, 컨트롤러에 의해 자동으로 포함되도록하는 방법이 있습니까? message_model이 없을 때 message_model이로드 될 때 (자동으로로드되기를 원하지 않을 때)로드됩니다.

편집 2 :

정말, 내가 모델을 글로벌 CONFIGS를 들어

답변

2

는 브레넌 노박 응답을 확장, 당신은 모델 생성자에서 설정 파일을로드하여 코드를 단순화 할 수 있습니다. 그렇게하면 컨트롤러에 모델을로드하기 만하면 나머지는 자동으로 수행됩니다.

모델

class Message_model extends Model { 

    function __construct() 
    { 
     parent::Model(); 
     $this->load->config('message_model_constants'); 
    } 
... 
} 

컨트롤러

class Some_controller extends Controller { 

    function __construct() 
    { 
     parent::Controller(); 
     $this->load->model('message_model'); 
    } 
... 
} 
이미 언급

, 당신의 설정 파일은 응용 프로그램/설정/message_model_constants.php

1

를 사용하는 경우를 제외하고 자동로드 정수를 가지고있는 config/config.php에 추가하거나 config/application.php을 만들려하지 않고 구성을로드 한 다음 항목을로드하십시오.

$this->config->load('application'); // or autoload this - $autoload['config'] = array('application'); 
$this->config->item('item name'); 
3

특정 모델을 컨트롤러에로드 할 때 특정 구성 파일을로드하도록 선택할 수 있습니다. 당신이 그것을 포함하는 경우,이

function __construct() { 
    $this->config->load('messages'); 
    $this->load->model('message_model'); 
} 

같은 컨트롤러의 상단에있는 모든

$this->config->load('messages'); 

: 파일의 예를 들어 :

application/controllers/messages.php 

는이 같은 라인을 사용합니다 이러한 상수는 주어진 컨트롤러의 모든 함수와 메소드에서 사용할 수 있습니다. 다음과 같이 각 구성 상수를 호출합니다.

$this->config->item('item name') 

보호 된 $ 변수의 이름을 지정할 수 있습니다. 더 짧은 구문을위한 구문에서도 마찬가지입니다.

여러 개의 다른 컨트롤러에서 이러한 구성 상수와 메시지 모델을 사용하는 경우 "라이브러리"파일을 만들어 구성과 모델을 모두로드 한 다음 모든 변수를 선언 할 수 있습니다.

0

Message_Model 클래스에 상수를 추가한다고 생각하십니까? 그런 다음 클래스 내부에 self::ConstantName을 참조하고 클래스 외부에는 Message_Model::ConstantName을 참조합니다. 이렇게하면 이름 공간 충돌을 방지 할 수 있습니다.

+0

내가 생각하지 않는이 작품이어야한다 Codeigniter가 모델을로드하는 방법을 기반으로합니다. – wag2639

4

application/config/constants.php로 이동하여 정의하는 상수 자신의 당신은

그러나

이 경우에 나는 당신이 PHP를 작성하는 것을 선호 "도우미"과 "라이브러리"를 포함하지 CI의 모델 - 뷰 - 컨트롤러에 상수를 사용할 수 있습니다 귀하의 상수가있는 파일을 my_constants_helper.php과 같은 이름으로 바꿉니다.모델 또는 컨트롤러 __construct 단지

$this->load->helper('my_constants'); 

에서

그리고 만세 당신이 그들에 액세스 할 수 있습니다 =)

+0

대단한 트릭 ... 매력처럼 작동합니다 ... – user311509

관련 문제