2010-06-14 34 views
5

Tôi có một danh sách các hằng số (tôi đang sử dụng chúng như một enum), một số là các câu lệnh xác định, và một số chỉ là các biến toàn cầu.Tôi đặt tệp hằng số cho Codeigniter (PHP) ở đâu?

Tôi cho phép đặt chúng trong khung MVC ở đâu để tôi có thể sử dụng chúng cho cả mô hình và bộ điều khiển của tôi cần tham khảo?

Tôi không muốn gắn nó vào config/constants.php vì chúng không nên được gọi trừ khi mô hình này và bộ điều khiển sử dụng nó.

Sửa 1: Làm rõ

Để cụ thể hơn, tôi có mô hình message_model của tôi và nó có một loạt các hằng số mà tôi cần được lưu trữ trong message_model_constants.php. Tôi nên đặt message_model_constants.php và có cách nào để bộ điều khiển tự động bao gồm bởi bộ điều khiển tải message_model khi message_model không phải là (và tôi không muốn nó được tự động tải).

Chỉnh sửa 2:

tôi thực sự không muốn có hằng số tự động nạp trừ khi tôi sử dụng mô hình

Trả lời

2

mở rộng Brennan Novak câu trả lời, bạn có thể đơn giản hóa mã của bạn bằng cách tải tập tin cấu hình của bạn trong các nhà xây dựng mô hình. Bằng cách đó, bạn chỉ phải tải mô hình trong bộ điều khiển của mình và mọi thứ khác được thực hiện tự động.

Mẫu

class Message_model extends Model { 

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

khiển

class Some_controller extends Controller { 

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

Như đã nêu, các file cấu hình của bạn nên được application/config/message_model_constants.php

1

Đối với configs toàn cầu, thêm vào config/config.php hoặc tạo một config/application.php và sau đó tải cấu hình, sau đó là mục.

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

Bạn có thể chọn tải một tệp cấu hình cụ thể khi bạn tải một mô hình cụ thể trong bộ điều khiển. Ví dụ trong file của bạn:

application/controllers/messages.php 

Bạn sẽ sử dụng một dòng như thế này:

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

Nếu bạn bao gồm nó ở phía trên cùng của điều khiển của bạn như thế này

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

Sau đó, tất cả các các hằng số đó sẽ có sẵn cho tất cả các hàm và phương thức trong bộ điều khiển đã cho. Sau đó, bạn gọi mỗi cấu hình không đổi như sau:

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

Và bạn có thể đặt tên cho biến $ được bảo vệ; trong cấu trúc cũng cho cú pháp ngắn hơn.

Nếu bạn đang sử dụng các hằng số cấu hình và mô hình tin nhắn trong nhiều bộ điều khiển khác nhau, bạn có thể muốn tạo một tệp "Thư viện", sau đó tải cả cấu hình và mô hình và khai báo tất cả các biến đó.

0

Bạn đã cân nhắc việc thêm các hằng số vào lớp Message_Model của mình chưa? Sau đó, bạn sẽ tham chiếu chúng theo self::ConstantName bên trong Lớp và Message_Model::ConstantName bên ngoài lớp học. Điều này cũng sẽ ngăn ngừa xung đột không gian tên.

+0

Tôi không nghĩ rằng tác phẩm này dựa trên cách Codeigniter tải Mô hình. – wag2639

4

Đến application/config/constants.php và xác định của bạn thường xuyên của họ và bạn có thể sử dụng các hằng số của bạn trên MVC của CI không bao gồm "Helper" và "Thư viện"

Nhưng trong trường hợp của bạn tôi thích bạn tạo ra một php tệp có các hằng số của bạn và đổi tên thành một cái gì đó như my_constants_helper.php.

Trong mô hình hoặc điều khiển __construct chỉ

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

của bạn Và hoan hô bạn có thể truy cập chúng =)

+0

Bí quyết tuyệt vời ... Hoạt động như một sự quyến rũ ... – user311509

Các vấn đề liên quan