CodeIgniter - где поставить функции / классы? - PullRequest
1 голос
/ 31 января 2012

У меня проблемы с пониманием того, где следует хранить классы в CI. Я создаю приложение, которое описывает / продает мобильные телефоны.

Мне бы хотелось, чтобы все мои функции (например, getphone, getdetails и т. Д.) Находились в одном классе, называемом Mobile - я понимаю, что этот файл должен называться Mobile.php и находиться в папке контроллеров.

Могу ли я иметь несколько функций внутри Mobile.php? Э.Г.

public function getphone() {
   xxx
   xx
   xx
}

public function getdetails() {
   xxx
   xx
   xx
}

Или мне нужно поместить каждую функцию в свой класс?

Я бы очень признателен за просмотр примера кода, который работает. Я просматривал документацию и Google в течение нескольких часов и пробовал всевозможные варианты URL, чтобы найти тестовый класс, но без особой удачи! Я даже возился с маршрутами и .htaccess ...

Все, чего я пытаюсь достичь, это следующее:

http: /// model / HTC-Desire / для перенаправления на функцию, которая принимает HTC-Desire в качестве параметра (как мне нужно для поиска в БД). Контроллер по умолчанию работает нормально, но не может заставить что-либо работать после этого.

Есть идеи?

Спасибо

Ответы [ 3 ]

12 голосов
/ 01 февраля 2012

На самом деле это работает так:

Контроллеры и модели переходят в свои перспективные папки в том виде, в каком вы их знаете

Если вы хотите создать функции, которые не являются методами объекта, вы должны создать вспомогательный файл. Больше информации здесь: http://codeigniter.com/user_guide/general/helpers.html

Теперь, если вы хотите создать свои собственные типы данных (классы, которые не расширяют Модели и Контроллеры), вы добавляете их в папку библиотеки. Поэтому, если, скажем, вы хотите создать класс «Автомобиль», вы создадите этот файл:

class Car{

   function __construct(){}
}

и сохраните его в папке библиотеки как car.php

Чтобы создать экземпляр класса Car, вы должны сделать следующее:

$this->load->library('car');
$my_car = new Car();

Больше информации о библиотеках здесь:
http://codeigniter.com/user_guide/general/creating_libraries.html

0 голосов
/ 31 января 2012

Классы могут существовать как Controllers и Models, поскольку CodeIgniter реализует шаблон MVC .Я рекомендую прочитать больше об этом, чтобы понять, как ваши классы / функции / и т. Д.может быть лучше всего организовано.

В общем, Pyro CMS - это приложение, созданное с помощью CodeIgniter, и исходный код находится в свободном доступе.Я уверен, что есть другие.

0 голосов
/ 31 января 2012

Да, вы можете иметь столько функций в классе контроллера, сколько захотите.Они доступны через URL /class/function.

Вы можете перехватывать параметры в функциях класса, хотя это не рекомендуется.

class Mobile extends CI_Controller{

    public function getPhone($phoneModel=''){
        echo $phoneModel;
        //echo $this->input->post('phoneModel');
    }
}

http://site.com/mobile/getPhone/HTC-Rad теоретически вылилось бы в «HTC-Rad». ОДНАКО , специальные символы не приветствуются в URL-адресах в CI по умолчанию, поэтому в этом примере вы можете встретиться с ошибкой «Запрещенные символы URI». Вам лучше передать модель телефона (илилюбые другие параметры) через $_POST к контроллеру.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...