IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Zend Framework PHP Discussion :

Profiler Firebug


Sujet :

Zend Framework PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut Profiler Firebug
    Bonjour,

    Cela fait plusieurs fois que j'abonne l'idée d'utiliser firebug, car après plusieurs heurs, à chaque fois j'échoue.


    Cette fois j'ai envie de mettre en place ce Profiler, et j'ai besoin de votre aide.


    Voici divers tuto que j'ai suivis :

    http://framework.zend.com/manual/fr/....profiler.html
    http://www.peacocksuit.com/blog/2008...es-to-firebug/
    http://www.libre-a-vous.fr/requetes-...filer-firebug/

    Je vais vous monter ce qu' j'ai écris dans mes fichiers, je vais mettre un max d'infos pour mieux vous aider, dsl pour la longueur :

    Bootstrap (sans le profiler)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Bootstrap extends Zend_Application_Bootstrap_Bootstrap {
        protected function _initAutoload() {
            $moduleLoader = new Zend_Application_Module_Autoloader(array(
                            'namespace' => '',
                            'basePath' => APPLICATION_PATH));
            return $moduleLoader;
        }
     
    }

    application.ini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    [production]
    phpSettings.display_startup_errors = 0
    phpSettings.display_errors = 0
    includePaths.library = APPLICATION_PATH "/../library"
    bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
    bootstrap.class = "Bootstrap"
    appnamespace = "Application"
    resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
    resources.frontController.params.displayExceptions = 0
    phpSettings.date.timezone = "Europe/Paris"
    resources.db.adapter = PDO_MYSQL
    resources.db.params.host = localhost
    resources.db.params.username = juliendu75
    resources.db.params.password = *******
    resources.db.params.dbname = base_test
    database.params.profiler.enabled   = true
    database.params.profiler.class  = Zend_Db_Profiler_Firebug
     
    [staging : production]
     
    [testing : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
     
    [development : production]
    phpSettings.display_startup_errors = 1
    phpSettings.display_errors = 1
    resources.frontController.params.displayExceptions = 1

    un exemple d'une classe métier de la table Zone, c'est très minimaliste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Model_DbTable_Itstaff extends Zend_Db_Table_Abstract {
        protected $_name = 'it_staff' ; # Nom de la table.
        protected $_primary = 'it_id'; # Attribut clé primaire.
        protected $_dependentTables = array('zone') ;
    }

    le contrôleur index, encore une fois très minimaliste:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        public function testAction()
        {
            $table = new Model_DbTable_Itstaff() ;
            $res = $table->fetchAll();
            $this->view->staff = $res;
        }


    alors maintenant il faut rajouter le code pour activer le profiler,

    dans Bootstrap j'ajoute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
        protected function _initDB() {
            $params = array(
                'host'     => '127.0.0.1',
                'username' => 'juliendu75',
                'password' => '******',
                'dbname'   => 'base_test'
            );
            $db = Zend_Db::factory('PDO_MYSQL', $params);
     
            $profiler = new Zend_Db_Profiler_Firebug('All DB Queries');
            $profiler->setEnabled(true);
     
            $db->setProfiler($profiler);
        }

    et là il y a une erreur :
    An error occurred

    Application error

    Exception information:

    Message: No adapter found for Model_DbTable_Itstaff

    Stack trace:

    #0 C:\wamp\www\test\library\Zend\Db\Table\Abstract.php(739): Zend_Db_Table_Abstract->_setupDatabaseAdapter()
    #1 C:\wamp\www\test\library\Zend\Db\Table\Abstract.php(268): Zend_Db_Table_Abstract->_setup()
    #2 C:\wamp\www\test\application\controllers\IndexController.php(27): Zend_Db_Table_Abstract->__construct()
    #3 C:\wamp\www\test\library\Zend\Controller\Action.php(513): IndexController->testAction()
    #4 C:\wamp\www\test\library\Zend\Controller\Dispatcher\Standard.php(289): Zend_Controller_Action->dispatch('testAction')
    #5 C:\wamp\www\test\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #6 C:\wamp\www\test\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #7 C:\wamp\www\test\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #8 C:\wamp\www\test\public\index.php(26): Zend_Application->run()
    #9 {main}

    alors je me suis dit qu'il faut ajouter le '$db' dans la classe model.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public function __construct($db) {
            $this->_db = $db;
        }

    puis dans le contrôleur faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
                   $params = array(
                'host'     => '127.0.0.1',
                'username' => 'juliendu75',
                'password' => '******',
                'dbname'   => 'base_test'
            );
            $db = Zend_Db::factory('PDO_MYSQL', $params);
     
            $table = new Model_DbTable_Itstaff($db) ;

    C’est moche mais ça marche.
    Je n’ai pas envie de rappeler le '$db' à chaque contrôleur....


    La requête marche, mais pas le profiler Firebug

    J’en appelle à votre aide, j’ai mis un maximum de choses pour vous faciliter la tâche.

    Merci d’avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Je sais que c'est long à lire, mais j'ai voulu donner le maximum de renseignements.
    Seul je n'y arrive pas, alors je repasse souvent dans l'espoir d'avoir de l'aide.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Moi, je mémorise mon adaptateur comme adaptateur par défaut dans le bootstrap.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // Paramétrage de la base de données
    $db = MyZend_Db::factory ( $config->resources->db->adapter, $config->resources->db->params->toArray () );
    Zend_Db_Table::setDefaultAdapter ( $db ); //base de données par défaut
     
    $profiler = new Zend_Db_Profiler_Firebug();
    $profiler->setEnabled(true);
    // Attach the profiler to your db adapter
    $db->setProfiler($profiler);
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 70
    Par défaut
    Merci de ta réponse,
    J’ai fais dans le bootstrap
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                $config = new Zend_Config_Ini('C:\wamp\www\test\application\configs\application.ini');
                $db = Zend_Db::factory(
                        $config->production->resources->db->adapter,
                        $config->production->resources->db->params->toArray()
                );
                Zend_Db_Table::setDefaultAdapter ( $db );
                Zend_Registry::set("db", $db);
     
                $profiler = new Zend_Db_Profiler_Firebug();
                $profiler->setEnabled(true);
                // Attach the profiler to your db adapter
                $db->setProfiler($profiler);
    L’initialisation est correcte
    puis dans un controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $res = Zend_Registry::get('db')->query("select * from country");
            $this->view->result = $res->fetchAll();
    Cela fonctionne bien

    Cependant, FireBug ne fonctionne toujours pas, j'ai mis le Profiler et configuré Firebug comme dans les tuto ...

    Au passage, j'utilise Zend depuis 3 mois et je n'ai jamais eu besoin d'utiliser d'adaptateur $db.
    en gros le code ci-dessus dans le bootstap je ne l'avais pas.
    les requêtes étaient dans le genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $res = new Model_DbTable_Country();
    $this->view->result = $res->fetchAll;
    ou $res->maMéthode()
    et dans les méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
            public function selectName()
            {
                    $query = $this->select()->order('country_name');
                    return $this->fetchAll($query);
            }
    voilà juste pour vous montrer.


    Pour revenir à FireBug

    Si quelqu’un peut m’envoyer un petit exemple avec un bootstrap, un controller et un model, par mail ou megaupload par exemple, je lui serai très reconnaissant.

Discussions similaires

  1. [PROFILER][THREAD][java.prof] outil gratuit/complet?
    Par narmataru dans le forum Général Java
    Réponses: 11
    Dernier message: 16/11/2005, 12h28
  2. compréhension du profil d'une fonction
    Par lor dans le forum MFC
    Réponses: 7
    Dernier message: 08/01/2004, 12h59
  3. C'est quoi "Profile" dans le assign du XMLGram ?
    Par Lux interior dans le forum XMLRAD
    Réponses: 2
    Dernier message: 28/02/2003, 11h37
  4. Profiler pour Java
    Par donde dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 10/02/2003, 17h36
  5. [API win32] Récupérer le répertoire d'un profile
    Par sbeu dans le forum API, COM et SDKs
    Réponses: 3
    Dernier message: 27/09/2002, 12h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo