2010-12-11 2 views
9

Просто начал использовать CodeIgniter, и я бы хотел импортировать некоторые из моих старых классов для использования в новом проекте. Тем не менее, я не хочу слишком сильно их модифицировать, чтобы вписываться в способ выполнения CI, и я хотел бы иметь возможность продолжать использовать функции автозаполнения NetBeans, что не очень хорошо работает с CI.Загрузка пользовательских классов в CodeIgniter?

Итак, что является лучшим способом загрузки пользовательских классов & файлов классов в CodeIgniter без использования механизмов загрузки библиотеки/модели?

Прошу прощения, если это то, что я могу найти быстро, но я не могу найти то, что мне нужно. Все, что я вижу, просто говорит мне, как пройти через ДИ.

ответ

8

Я бы сказал, что вы, по крайней мере, напишите класс-оболочку, который может require классов и создавать объекты и сделать их доступными. Тогда вы, вероятно, можете автозагрузить такую ​​библиотеку и использовать ее по мере необходимости.

Я бы порекомендовал вам, по крайней мере, попробовать, чтобы они вписывались в путь CI, поскольку продвижение вперед сделает вашу жизнь намного легче. Я был в той же позиции и узнал именно это на этом пути.

+0

Полностью согласен .... –

+0

Поскольку это всего лишь 3 класса для абстрагирования доступа DB & Memcache, я взял подход, который я получил. Это был не технический вопрос, а проблема дизайна. – Tarka

-4

Если вы только начинаете использовать CodeIgniter, возможно, вам стоит проверить Kohana (http://kohanaframework.org/). Он очень похож на CodeIgniter во многих отношениях, но он загружает классы обычным способом (используя новое ClassName()), поэтому функции автозаполнения Netbeans должны работать нормально.

+0

Только 2.x имеет какое-либо сходство с CI, ветвь 3.x совершенно другая. Они действительно действительно разделяют тот факт, что они используют PHP и MVC ... –

12

Библиотеки просты в написании, но у них есть несколько ограничений. Конструкторы могут принимать только массив в качестве параметра, и предполагается, что для каждого файла будет существовать только один класс.

Вы можете включить любой из ваших собственных классов, чтобы работать с ними, как вы хотите, так как это только PHP OFC :)

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

Или установить функцию __autoload() в вашем config.php (лучше место для этого), и вы можете иметь доступ к своим классам, не добавляя их.

16

Чтобы сделать это с помощью codeignign, поместите свои пользовательские классы в папку библиотек codeigniter. А затем использовать его, добавив этот класс в качестве библиотеки в контроллере, как это:

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

class Someclass { 

    public function some_function() 
    { 
    } 
} 

/* End of file Someclass.php */ 

с помощью контроллера:

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

оформления заказа полной версии статьи на http://www.codeigniter.com/user_guide/general/creating_libraries.html

Смежные вопросы