1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
| <?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
public static function autoload($class)
{
include str_replace('_', '/', $class) . '.php';
return $class;
}
/**
* Fonction de chargement
*/
protected function _initAutoload()
{
//on configure le module par défaut avec son namespace, son chemin et les ressources associées
$moduleLoader = new Zend_Application_Module_Autoloader(array(
'namespace' => 'Default_',
'basePath' => APPLICATION_PATH . '/modules/default'));
$moduleLoader->addResourceType('Models', 'models', 'Models');
$moduleLoader->addResourceType('Forms', 'forms', 'Forms');
Zend_Session::start();
return $moduleLoader;
}
/**
* Fonction servant à initialiser la vue
*/
protected function _initView()
{
// Initialize view
$view = new Zend_View();
$view->doctype('XHTML1_STRICT');
$view->headMeta()->appendHttpEquiv('Content-Type',
'text/html; charset=utf-8');
$view->addHelperPath('App/View/Helper/', 'App_View_Helper');
$view->addHelperPath('App/View/Helper/Navigation', 'MyApp_View_Helper_');
$view->addHelperPath('ZendX/JQuery/View/Helper', 'ZendX_JQuery_View_Helper');
Zend_View_Helper_PaginationControl::setDefaultViewPartial('pagination.phtml');
// Add it to the ViewRenderer
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('ViewRenderer');
$viewRenderer->setView($view);
//ZendX_JQuery_View_Helper_JQuery::enableNoConflictMode();
// Return it, so that it can be stored by the bootstrap
return $view;
}
protected function _initModifiedFrontController()
{
$this->bootstrap('FrontController');
$front = $this->getResource('FrontController');
$response = new Zend_Controller_Response_Http;
$response->setHeader('Content-Type','text/html; charset=UTF-8', true);
$front->setResponse($response);
}
protected static function _initNamespaces()
{
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('App_');
$autoloader->registerNamespace('Doctrine_');
$autoloader->registerNamespace('Doctrine');
}
protected function _initDoctrine()
{
//on met Doctrine en autoload
$this->getApplication()
->getAutoloader()
->pushAutoloader ( array ('Doctrine', 'autoload' ) );
spl_autoload_register(array('Doctrine', 'modelsAutoload'));
//on récupère une instance de Doctrine
$manager = Doctrine_Manager::getInstance ();
//permet de valider automatiquement l'intégrité des données
//ce qui veut dire que l'on ne peut pas mettre une variable de type string
//dans une variable de type int.
$manager->setAttribute (Doctrine::ATTR_VALIDATE, Doctrine::VALIDATE_ALL);
//l'AUTO_ACCESSOR_OVERRIDE va nous permettre de personnaliser l'assignation de données.
$manager->setAttribute ( Doctrine::ATTR_AUTO_ACCESSOR_OVERRIDE, true );
//Doctrine permet de personnaliser également les classes de table en permettant
//de créer des méthodes propres à une table.
//Ce paramètre permet de charger le fichier contenant nos méthodes personnalisées.
$manager->setAttribute (
Doctrine::ATTR_MODEL_LOADING,
Doctrine::MODEL_LOADING_CONSERVATIVE
);
//on permet le chargement des classes table
$manager->setAttribute ( Doctrine::ATTR_AUTOLOAD_TABLE_CLASSES, true );
//on récupère toutes les options doctrine du fichier app.ini
$doctrineConfig = $this->getOption('doctrine');
//on récupère la variable doctrine.models_path du fichier app.ini
//afin d'avoir le répertoire des models
//pour que Doctrine les charge
Doctrine::loadModels($doctrineConfig['models_path']);
//on récupère la connexion à mysql et on la nomme doctrine
$conn = Doctrine_Manager::connection($doctrineConfig['dsn'],'doctrine');
//je sais plus ce que sa veut dire, mais il le faut
$conn->setAttribute(Doctrine::ATTR_USE_NATIVE_ENUM,true);
//on définit la sortie encodée en UTF-8
$conn->setCharset('utf8');
$conn->setCollate('utf8_general_ci');
//on retourne la connexion
return $conn;
}
} |
Partager