Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-06-2009 12:36:35

riky'
Membre
Date d'inscription: 25-06-2009
Messages: 12

Autoloader version 1.8.x

Bonjour,

Je voudrais savoir comment s'utilise la fonction d'autoload avec des classes autres que celles de la librairie Zend.

J'ai créer un projet avec la commande

Code:

zf create project newProject

afin d'avoir l'arborescence correcte.

Je nomme mes classes suivant où elles se trouvent dans l'arborescence.
Par exemple une classe userModel.php dans application/models/ est nommée Zend_Models_userModel

Je pensais pouvoir me servir facilement de l'autoload en respectant cette convention mais mes classes ne sont pas trouvées. Le code que j'utilise pour chaque en-tête de classe est celui-ci :

Code:

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance(); // avec setFallBackAutoloader(true) ou non c'est pareil

Merci beaucoup smile

Hors ligne

 

#2 25-06-2009 12:53:41

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: Autoloader version 1.8.x

As-tu regardé les différents tutoriels sur l'autoload 1.8 ? ( ex: http://devzone.zend.com/article/4525-De … Autoloader )


aka miboo

Hors ligne

 

#3 25-06-2009 13:06:53

riky'
Membre
Date d'inscription: 25-06-2009
Messages: 12

Re: Autoloader version 1.8.x

Oui oui j'en ai regardé plusieurs et c'est d'ailleurs pour ça que je viens là parce que je n'arrive pas à le faire fonctionner.

Etant donné que mes classes commencent toutes par Zend_ j'ai aussi essayé d'utiliser

Code:

Zend_Loader_Autoloader::getInstance()->registerNamespace('Zend_');

Mais bon c'est ce qui est déjà fait automatiquement et ça ne marche pas mieux avec...

Hors ligne

 

#4 25-06-2009 14:11:46

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Autoloader version 1.8.x

Le namespace Zend_ est déjà utilisé par le Framework. Utilises en un autre.

De plus, si tu ne mets pas ton chemin Application/models dans ton include path, ca ne sert à rien d'enregistré un Namespace


----
Gruiiik !

Hors ligne

 

#5 25-06-2009 14:39:50

riky'
Membre
Date d'inscription: 25-06-2009
Messages: 12

Re: Autoloader version 1.8.x

D'accord merci.

Mais en fait je crois que je n'ai pas bien compris comment tout fonctionnait et se lançait.
Je suis un peu perdu dans l'arborescence, je ne vois pas trop ce que fait le bootstrap, comment on le lance; de même avec le fichier index.php et /view/script/index/index.phtml

J'essaye simplement de faire une appli MVC qui affiche les données d'une table MySql pour me familiariser avec le framework mais même avec l'aide de tutos et le livre Zend Framework j'ai du mal...

Si je mets tout mon code dans une classe et que j'instancie cette classe dans le fichier index.php, ça affiche bien ce que je veux.
Donc c'est au niveau du MVC et des outils zend que je bloque.

Voilà ma classe users dans models

Code:

<?php

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

class Zend_Models_Users {
    
    private $db;
    
    public function __construct(){

    }
        
    public function connexion(){
        $configFile = 'C:/Program Files/xampp/htdocs//users/application/configs/config.ini';
        $config = new Zend_Config_Ini($configFile,'db');
        $this->db = Zend_Db::factory($config->database);
        
    }
    
    public function allUsers(){
        $this->connexion();        
        $query = 'SELECT * FROM user';
        $result = $this->db->fetchAll($query);
                // Zend_Debug::dump($result);
        return $result;
    }
    
}

Ma classe monController dans controllers

Code:

<?php


require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();


class Zend_Controllers_monController {
    
    
    public function __construct(){
    }
    
    public function recupUsers(){
        $users = new Zend_Models_UsersModels();
        foreach($users->allUsers() as $user){
            $tab[] = $user['nom'];
        };
        zend_debug::dump($tab);
    }
}

Je n'ai pas encore regardé au niveau de la vue, je me suis contenté dans index.php de ça

Code:

<?php

require_once 'Zend/Loader/Autoloader.php';
Zend_Loader_Autoloader::getInstance();

$a = new Zend_Controllers_monController();
$a->recupUsers();

Enfin mon bootstrap est vide.

Hors ligne

 

#6 25-06-2009 15:13:02

Vincent
Administrateur
Date d'inscription: 19-09-2008
Messages: 510

Re: Autoloader version 1.8.x

Les débuts avec le Zend Framework sont pas évidents, faut persévérer.

Si tu veux réaliser ta première petite application avec une petite bases de données mysql, tu peux suivre le tutoriel de Rob Allen dispo ici : http://akrabat.com/zend-framework-tutorial/ (compatible 1.8)

Pour le reste il faut faire un petit travail de recherche sur la documentation et les livres disponibles.

Le namespace Zend_ est déjà utilisé par le Framework. Utilises en un autre.

Effectivement, t'as le droit à tout ce que tu veux sauf celui là.



Le bootstrap est un fichier qui va contenir les portions de code utiles à chaque instance de l'application, comme le paramétrage des namespaces, la configuration de l'auto-chargement de classe, etc. Il est appelé par le fichier index.php

Le fichier index.php est le point d'entrée unique de l'application. L'utilisateur de ton appli ne communique qu'avec l'index.php qui se charge de faire circuler la requête.

Il charge l'ensemble des chemins de l'application (via la fonction include path), et prépare la configuration de l'application (via le module Zend_Application qui va aller chercher le fichier /config/application.ini).

Une fois que tous "les paramètres" sont prêts, ce fichier appel le bootstrap puis "dispatch" la requête :
La requête va ensuite circuler via les contrôleurs (répertoire controller), qui effectueront leurs traitements à l'aide de modèles (répertoire models) et afficheront les données à l'écran à l'aide de vues (répertoire view).


aka miboo

Hors ligne

 

#7 25-06-2009 15:20:08

riky'
Membre
Date d'inscription: 25-06-2009
Messages: 12

Re: Autoloader version 1.8.x

Oki merci pour le tuto.

Par contre ce que je ne comprends pas c'est que si mes classes commencent par Zend_ elles devraient être trouvées par l'autoload par défaut vu qu'il cherche les Zend_ ????

Hors ligne

 

#8 29-06-2009 10:15:18

podo
Membre
Date d'inscription: 29-06-2009
Messages: 18

Re: Autoloader version 1.8.x

Non. Ce sont les classes par defaut de Zend qui doivent etres préfixés par Zend_ je crois. Les autres doivent etre préfixées par un namespace personalisé.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages