2010-12-11 28 views
9

Chỉ cần bắt đầu sử dụng CodeIgniter, và tôi muốn nhập một số lớp cũ của tôi để sử dụng trong một dự án mới. Tuy nhiên, tôi không muốn sửa đổi chúng quá nhiều để phù hợp với cách thức làm việc của CI, và tôi muốn có thể tiếp tục sử dụng chức năng tự động hoàn thành của NetBeans, nó không hoạt động tốt với CI.Đang tải các lớp tùy chỉnh trong CodeIgniter?

Vì vậy, cách tốt nhất để tải các lớp tùy chỉnh & tệp lớp vào CodeIgniter mà không cần phải sử dụng cơ chế tải thư viện/mô hình là gì?

Tôi xin lỗi nếu đây là điều tôi có thể tìm thấy nhanh chóng, nhưng dường như tôi không thể tìm thấy những gì tôi theo sau. Tất cả những gì tôi thấy chỉ là nói với tôi làm thế nào để đi qua CI.

Trả lời

8

Tôi muốn nói ít nhất bạn viết một lớp trình bao bọc có thể require các lớp và khởi tạo các đối tượng và làm cho chúng có thể truy cập được. Sau đó, bạn có thể tự động tải thư viện đó và sử dụng nó khi cần thiết.

Tôi khuyên bạn nên ít nhất là cố gắng để chúng phù hợp theo cách CI, khi tiến lên điều này sẽ làm cho bạn dễ dàng hơn nhiều. Tôi đã ở cùng vị trí và học được điều này trên đường đi.

+0

Hoàn toàn đồng ý .... –

+0

Vì nó chỉ là 3 lớp để trừu tượng truy cập DB & Memcache, tôi đã lấy cách tiếp cận mà tôi đã thực hiện. Nó không thực sự là một vấn đề kỹ thuật, một vấn đề thiết kế. – Tarka

-4

Nếu bạn mới bắt đầu sử dụng CodeIgniter, có thể bạn nên kiểm tra Kohana (http://kohanaframework.org/). Nó rất giống với CodeIgniter theo nhiều cách nhưng nó tải các lớp theo cách thông thường (sử dụng ClassName mới()) để các tính năng tự động hoàn thành của Netbeans hoạt động bình thường.

+0

Chỉ 2.x có bất kỳ điểm tương đồng nào với CI, nhánh 3.x hoàn toàn khác nhau. Họ chỉ thực sự chia sẻ thực tế là họ sử dụng PHP và MVC ... –

12

Thư viện dễ viết nhưng có một số hạn chế. Các nhà xây dựng chỉ có thể lấy một mảng làm tham số và giả định rằng chỉ có một lớp sẽ tồn tại trên mỗi tệp.

Bạn có thể bao gồm bất kỳ lớp học của riêng bạn để làm việc với họ tuy nhiên bạn muốn, vì đây là chỉ PHP OFC :)

include APPPATH . 'classes/foo.php'; 
$foo = new Foo; 

Hoặc thiết lập một chức năng __autoload() trong file config.php của bạn (tốt nhất đặt cho nó được) và bạn có thể có quyền truy cập vào các lớp học của bạn mà không cần phải bao gồm chúng.

16

Để thực hiện điều này, hãy đặt các lớp tùy chỉnh của bạn vào thư mục thư viện của trình mã hóa. Và sau đó sử dụng nó bằng cách thêm rằng lớp như thư viện trong điều khiển của bạn như thế này:

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class Someclass { 

    public function some_function() 
    { 
    } 
} 

/* End of file Someclass.php */ 

sử dụng trong điều khiển:

$this->load->library('someclass'); 

kiểm tra thông tin tại http://www.codeigniter.com/user_guide/general/creating_libraries.html

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