2010-12-11 41 views
9

Estoy empezando a usar CodeIgniter, y me gustaría importar algunas de mis clases anteriores para utilizar en un nuevo proyecto. Sin embargo, no quiero modificarlos demasiado para adaptarlos a la forma de hacer las cosas de CI, y me gustaría poder continuar utilizando la funcionalidad de autocompletar de NetBeans, que no funciona muy bien con CI.Cargando clases personalizadas en CodeIgniter?

Entonces, ¿cuál es la mejor manera de cargar clases personalizadas & archivos de clase en CodeIgniter sin tener que utilizar los mecanismos de carga de biblioteca/modelo?

Pido disculpas si esto es algo que debería ser capaz de encontrar rápidamente, pero parece que no puedo encontrar lo que busco. Todo lo que veo es solo decirme cómo pasar por CI.

Respuesta

8

Yo diría que al menos escribes una clase contenedora que podría require las clases y crear una instancia de los objetos y hacerlos accesibles. Entonces probablemente podría autocargar dicha biblioteca y usarla según sea necesario.

Recomendaría que al menos tratara de que encajen en la forma CI, ya que avanzar esto hará que la vida sea mucho más fácil. Estuve en la misma posición y aprendí esto en el camino.

+0

Totalmente de acuerdo .... –

+0

Dado que son solo 3 clases para abstraer el acceso a DB y Memcache, tomé el enfoque que terminé tomando. No era realmente un problema técnico, más un problema de diseño. – Tarka

-4

Si recién está empezando a utilizar CodeIgniter, tal vez debería consultar Kohana (http://kohanaframework.org/). Es muy similar a CodeIgniter en muchos aspectos, pero carga las clases de la forma habitual (utilizando new ClassName()), por lo que las funciones de autocompletado de Netbeans deberían funcionar normalmente.

+0

Solo 2.x tiene alguna similitud con CI, la rama 3.x es totalmente diferente. Solo comparten el hecho de que usan PHP y MVC ... –

12

Las bibliotecas son fáciles de escribir pero tienen algunas restricciones. Los constructores solo pueden tomar una matriz como parámetro y se supone que solo existirá una clase por archivo.

Puede incluir cualquiera de sus propias clases para trabajar con ellos lo que le apetezca, ya que esto sólo es OFC PHP :)

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

o la creación de una función __autoload() en su config.php (mejor lugar para que sea) y puede tener acceso a sus clases sin tener que incluirlas.

16

Para hacerlo de manera codeigniter, coloque sus clases personalizadas en la carpeta libraries de codeigniter. Y luego usarlo mediante la adición de esa clase como biblioteca en su controlador de la siguiente manera:

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

class Someclass { 

    public function some_function() 
    { 
    } 
} 

/* End of file Someclass.php */ 

usar en el controlador:

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

Pedido artículo completo en http://www.codeigniter.com/user_guide/general/creating_libraries.html

Cuestiones relacionadas