Parece que este es un problema muy común para principiantes con CodeIgniter, pero ninguna de las soluciones que he encontrado hasta ahora parece muy relevante para mi problema. Al igual que el tema dice que estoy tratando de incluir una clase personalizada en CodeIgniter.Clases personalizadas en CodeIgniter
Estoy tratando de crear varios objetos de la clase a continuación y colocarlos en una matriz, por lo tanto, necesito que la clase esté disponible para el modelo.
He intentado usar las funciones load (library-> load ('myclass') dentro de CodeIgniter que funcionan, excepto que primero intenta crear un objeto de la clase fuera del modelo. Esto obviamente es un problema desde el constructor espera que varios parámetros.
las soluciones que he encontrado hasta ahora es
- Un simple php incluyen lo que parece bastante bien, pero ya que soy nuevo en CodeIgniter quiero para asegurarse de que yo m apegándose a él tanto como posible.
- Creando una "clase contenedora" como se sugiere here, sin embargo no estoy seguro de cómo implementaría esto.
La clase quiero incluir, User.php
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
class User{
public $ID = 0;
public $username = 0;
public $access_lvl = 0;
public $staff_type = 0;
public $name = 0;
public function __construct($ID, $username, $access_lvl, $staff_type, $name)
{
$this->ID = $ID;
$this->username = $username;
$this->access_lvl = $access_lvl;
$this->staff_type = $staff_type;
$this->name = $name;
}
public function __toString()
{
return $this->username;
}
}
?>
Método (Modelo), que necesita el User.php
function get_all_users()
{
$query = $this->db->get('tt_login');
$arr = array();
foreach ($query->result_array() as $row)
{
$arr[] = new User
(
$row['login_ID'],
$row['login_user'],
$row['login_super'],
$row['crew_type'],
$row['login_name']
);
}
return $arr;
}
Y, finalmente, el controlador ,
function index()
{
$this->load->library('user');
$this->load->model('admin/usersmodel', '', true);
// Page title
$data['title'] = "Some title";
// Heading
$data['heading'] = "Some heading";
// Data (users)
$data['users'] = $this->usersmodel->get_all_users();
Gracias, funcionó como un encanto. –
¿Cuáles son las ramificaciones de usar esto sin espacio de nombres? ¿O el espacio de nombres nos permite trabajar dentro de la estructura de archivos en el servidor donde hemos definido nuestras clases personalizadas? – David