| 12
 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