Propel 1.6 - Вопрос о Включает - PullRequest
       1

Propel 1.6 - Вопрос о Включает

0 голосов
/ 14 августа 2011

Есть идеи, как избежать добавления 20 различных require() операторов к каждому из моих контроллеров CI?

В продолжение моего предыдущего вопроса об интеграции Propel с моим проектом, более сложная проблема. Я пытаюсь включить сгенерированный класс в мой контроллер приложения. Вот код:

require_once('PolicytypeQuery.php');

class PolicyType extends CI_Controller {

    function PolicyType() {
        parent::get_instance();
    }


    function index() {
        $data = array();
        $data['policytypes'] = PolicytypeQuery::create()->find();

        $this->load->view('policytype_view',$data);
    }

}

Сгенерированный класс зависит от некоторого базового класса, и я получаю сообщение об ошибке, которое указывает, что этот базовый класс еще где-то не включен:

[Sat Aug 13 16:22:56 2011] [error] [client 97.97.177.2] PHP Fatal error:
Class 'BasePolicytypeQuery' not found in
/var/lib/IPV/util/build/classes/vault/PolicytypeQuery.php on line 16

Я бы подумал , что в сгенерированном коде будут также сгенерированы необходимые операторы require(). Тем не менее, это не так:

/**
 * Skeleton subclass for performing query and update operations on the 'policytype' table.
 *
 *
 *
 * You should add additional methods to this class to meet the
 * application requirements.  This class will only be generated as
 * long as it does not already exist in the output directory.
 *
 * @package    propel.generator.vault
 */
class PolicytypeQuery extends BasePolicytypeQuery {

} // PolicytypeQuery

Есть ли опция генератора Propel для добавления операторов require() в сгенерированный код? Или, может быть, я не загружаю Propel правильно в моем проекте. С этой целью я следовал этому руководству по интеграции Propel с CodeIgniter:

http://codeigniter.com/wiki/Using_Propel_as_Model/

На шаге 3 я включаю Propel в автозагрузку библиотек. Должно ли это решить мою проблему?

Ответы [ 2 ]

1 голос
/ 14 августа 2011

Да, должно.

В PHP есть средство, называемое автозагрузка классов .Я не знаю propel , но если он правильно использует __autoload, вам не нужно больше использовать require.

0 голосов
/ 10 октября 2011

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

На этапе инициализации в CI вы должны инициализировать Propel таким образом (см. Шаг 2 в ссылке CI):

Propel::init('/path/to/database-conf.php');

Этот файл, database-conf.php, генерируется командой convert-conf вместе с картой классов автозагрузки, называемой classmap-database-conf.php.Первая включает в себя последнюю - как только вы это сделаете, все ваши классы Propel будут загружаться автоматически.

...