Я пробовал CodeIgniter. Пока мне это нравится. Я решил также попробовать Доктрину, потому что я так много слышу об ORM, и это Доктрина великолепна. Я нашел несколько уроков:
Я перепробовал все методы, которые я нашел в тех, чтобы попытаться установить работающую установку Doctrine, но я все еще не могу загрузить свою модель. Одна общая нить во всех этих документах состоит в том, что они являются старыми и ссылаются на старые версии Doctrine и / или CI, даже на собственные документы Doctrine, ссылочную версию 0.11. Я использую CodeIgniter-1.7.2 и Doctrine-1.2.3.
Есть ли у кого-нибудь актуальная документация? Кто-нибудь может увидеть, где код ниже идет не так? Это основано на ссылке phpandstuff.
File Structure
root
\_system
\_application
\_config
\_controllers
\_models
\_views
\_plugins
\_doctrine
\_lib
\_Doctrine.php
\_doctrine_pi.php
система / плагины / doctrine_pi.php
// load Doctrine library
require_once BASEPATH.'/plugins/doctrine/lib/Doctrine.php';
// load database configuration from CodeIgniter
require_once APPPATH.'/config/database.php';
// this will allow Doctrine to load Model classes automatically
//below is the suggested method of loading models
//I also tried a user's suggestion of "modelsAutoload"
//spl_autoload_register(array('Doctrine', 'autoload'));
//spl_autoload_register(array('Doctrine_Core', 'modelsAutoload'));
// we load our database connections into Doctrine_Manager
// this loop allows us to use multiple connections later on
foreach ($db as $connection_name => $db_values) {
// first we must convert to dsn format
$dsn = $db[$connection_name]['dbdriver'] .
'://' . $db[$connection_name]['username'] .
':' . $db[$connection_name]['password'].
'@' . $db[$connection_name]['hostname'] .
'/' . $db[$connection_name]['database'];
Doctrine_Manager::connection($dsn,$connection_name);
}
// CodeIgniter's Model class needs to be loaded
require_once BASEPATH.'/libraries/Model.php';
// telling Doctrine where our models are located
//Below is another user's suggestion, this also fails
//within my setup.
spl_autoload_register(array('Doctrine', 'autoload'));
spl_autoload_register(array('Doctrine', 'modelsAutoload'));
$manager = Doctrine_Manager::getInstance();
$manager->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
$manager->setAttribute(Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true);
$manager->setAttribute(Doctrine_Core::ATTR_AUTOLOAD_TABLE_CLASSES, true);
Doctrine::loadModels(APPPATH.'models');
// (OPTIONAL) CONFIGURATION BELOW
// this will allow us to use "mutators"
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true);
// this sets all table columns to notnull and unsigned (for ints) by default
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_COLUMN_OPTIONS,
array('notnull' => true, 'unsigned' => true));
// set the default primary key to be named 'id', integer, 4 bytes
Doctrine_Manager::getInstance()->setAttribute(
Doctrine::ATTR_DEFAULT_IDENTIFIER_OPTIONS,
array('name' => 'id', 'type' => 'integer', 'length' => 4));
из system / application / config / autoload.php
/*
| -------------------------------------------------------------------
| Auto-load Plugins
| -------------------------------------------------------------------
| Prototype:
|
| $autoload['plugin'] = array('captcha', 'js_calendar');
*/
$autoload['plugin'] = array('doctrine');
корень / системы / модель / User.php
class User extends Doctrine_Record {
function __construct(){
parent::__construct();
}
function setTableDefinition(){
$this->hasDefinition("username", "string", 255);
$this->hasDefinition("password", "string", 255);
}
}
Если кто-то захочет увидеть мой контроллер или что-то еще, дайте мне знать. Контроллер просто echo
s «добавил пользователя» и использует доктрину для сохранения пользователя. При этом встречается сообщение «Неустранимая ошибка: класс« Пользователь »не найден ...»