Похоже, что это очень распространенная проблема для новичков с CodeIgniter, но ни одно из решений, которые я нашел до сих пор, кажется, не имеет отношения к моей проблеме. Как говорится в теме, я пытаюсь включить пользовательский класс в CodeIgniter.
Я пытаюсь создать несколько объектов класса ниже и поместить их в массив, поэтому мне нужно, чтобы класс был доступен для модели.
Я пытался использовать функции load (library-> load ('myclass')) в CodeIgniter, который работает, за исключением того, что сначала он пытается создать объект класса вне модели. Это, очевидно, проблема, поскольку Конструктор ожидает несколько параметров.
Решения, которые я нашел до сих пор:
- Простой php include, который кажется достаточно хорошим, но так как я новичок в
CodeIgniter Я хочу убедиться, что я придерживаюсь его так же, как
возможно.
- Создание «класса-оболочки», как было предложено здесь , однако я не уверен, как бы это реализовать.
класс, который я хочу включить,
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;
}
}
?>
Метод (Модель), которому требуется 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;
}
И, наконец, контроллер,
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();