2013-05-14 25 views
15

Tôi đang sử dụng CodeIgniter 2.CodeIgniter cách chính xác để kiểm tra xem thư viện/helper/file lõi được nạp

Đánh giá cao nếu ai đó có thể hiển thị một cách chính xác để kiểm tra xem các tập tin sau đây:
- tập tin thư viện được tải ?
- tệp trợ giúp được tải?
- tệp cấu hình được tải?
- tệp mô hình được tải?
- tệp third_party được tải?

liên quan

+0

gì xảy ra khi bạn cố tình tải nó không đúng cách? Bạn có gặp bất kỳ lỗi CI nào không? Bởi vì bạn nên. – qwertzman

+0

Không kiểm tra, chỉ cần tải, Codeigniter có cách hiệu quả để xác định nó một mình. Nhìn ở đây: http://stackoverflow.com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257#23597257 –

Trả lời

22

Bạn có thể sử dụng bản địa class_exists chức năng PHP() để xác định xem các lớp đã được định nghĩa, trước khi gọi nó. Trong cùng một vấn đề, sử dụng method_exists() sẽ kiểm tra xem phương thức lớp tồn tại hay không.

Vì người trợ giúp là tập hợp chức năng, không phải phương pháp, việc kiểm tra có thể được thực hiện bằng hàm function_exists().

if (class_exists('Library')) 
{ 
    $this->library->myMethod(); 
} 

Đối biết thêm thông tin vui lòng tham khảo

http://php.net/manual/en/function.class-exists.php.

http://us.php.net/manual/en/function.method-exists.php

+0

cảm ơn sự hướng dẫn của bạn :) – user1884324

+0

Đây là cách kiểm tra chính xác nhưng nếu lý do để kiểm tra là bao gồm thư viện sau đó không sử dụng thư viện này. Tôi đã thực hiện một điểm chuẩn nhỏ mà chứng minh cách mặc định Codigniter của thư viện tải là cách tốt nhất. Nhìn ở đây: http: // stackoverflow.com/questions/19630019/codeigniter-load-libraries-if-not-already-loaded/23597257 # 23597257 –

9

Bạn không cần phải kiểm tra, bạn chỉ cần tải chúng bất cứ nơi nào bạn cần phải chắc chắn để có chúng.

Sử dụng thư viện Tải của CI ($this->load->[library|model|helper]) sẽ luôn tải nó chỉ một lần. Bạn có thể thấy điều này nếu bạn bật đăng nhập gỡ lỗi của mình.

+0

Bạn có chắc chắn về điều này? Tôi bao gồm thư viện phiên nhiều lần, bộ nhớ được sử dụng tăng đáng kể, tôi vừa thử nghiệm nó. Lỗi Codeigniter? –

+3

Nhìn vào Loader.php và tìm kiếm 'Nỗ lực thứ hai bị bỏ qua' (LƯU Ý: nếu bạn cung cấp tên tùy chỉnh, nó sẽ tạo ra một cá thể mới). – minboost

+1

Bạn nói đúng, Codeigniter cách là cách hiệu quả nhất, tôi đã làm một chút chuẩn –

1

Khi nạp Ví dụ bạn được lưu trữ trên bộ điều khiển, vì vậy để kiểm tra xem một mô hình đã được tải:

if (isset($this->my_model)) 

đâu $ này là điều khiển của bạn.

5

đây là phương pháp mã vạch để kiểm tra thư viện đã tải.

if($this->load->is_loaded('session') 
{ 
    $this->load->library('session'); 
} 
0

Cách tốt nhất để thực hiện việc này là sử dụng Lớp học Codeigniter Loader. Số Loader aka load có phương thức sẵn có is_loaded. Phương pháp is_loaded sẽ kiểm tra xem một lớp đã được tải hay chưa.

Nếu lớp học chưa được tải thì is_loaded trả về FALSE, nếu không nó sẽ trả về tên thuộc tính.

Ví dụ:

$this->load->library('table'); 
$this->load->is_loaded('table'); //Returns 'table' 
$this->load->is_loaded('blabla_library'); //Returns FALSE 
Các vấn đề liên quan