Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 22-10-2008 10:28:18

xender
Membre
Date d'inscription: 04-11-2007
Messages: 23

Probleme de conception de mon projet sous zf

Bonjour,

J'ai un problème j'ai actuellement un projet avec des classes PHP associé, je vois pas comment je peux réutilisé mes classes avec le zf.

Est ce que je dois mettre mes classes directement dans des models  ou alors j'ai une partie qui doit être dans le controller ?

Un exemple d'une de mes classes :

Code:

<?php

class account extends main {
    
    protected $mysql         = null;
    
    protected $s_error         = null;
    
    protected $n_id            = null;
    
    protected $s_login         = null;
    protected $s_password     = null;
    
    protected $s_name         = null;
    protected $s_email        = null;
    
    protected $n_group         = null;
    protected $a_group         = array ( 'admin' => 0, 'member' => 1, 'visitor' => 2 );
    
    public function __construct ( $n_id ) {
        global $mysql;

        if ( isset ( $mysql ) === true ) {
            $this->mysql = $mysql;
        }
        
        if ( is_int ( $n_id ) === true && $n_id > 0 ) {
            $this->n_id = $n_id;
        }
    }
    
    public function get_login () {
        return $this->s_login;
    }
    
    public function get_password (){
        return $this->s_password;
    }
    
    public function get_name (){
        return $this->s_name;
    }
    
    public function get_account (){
        return array ( 'login' => $this->s_login, 'password' => $this->s_password, 'name' => $this->s_name, 'email' => $this->s_email  ); 
    }
    
    public function set_login ( $s_login ){
        $this->set_error ();

        $s_login = trim ( $s_login );

        if ( $s_login === '' || strlen ( $s_login ) < 4 || strlen ( $s_login ) > 32 ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Invalid username', $s_login );
            return false;
        }

        // ---

        $this->s_login = $s_login;

        return true;
    }
    
    public function set_password ( $s_password ) {
        $this->set_error ();

        $s_password = trim ( $s_password );

        if ( $s_password === '' || strlen ( $s_password ) < 4 || strlen ( $s_password ) > 32 ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Invalid password', $s_password );
            return false;
        }

        // ---

        $this->s_password = $s_password;

        return true;
    }
    
    public function set_name ( $s_name ){
        $this->set_error ();
        
        $s_name = trim ( $s_name );
        
        if ( $s_name == '' || strlen ( $s_name ) < 4 ){
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Invalid name', $s_name );
            return false;
        }
        
        // --- 
        
        $this->s_name = $s_name;
        
        return true;
    }
    
    public function set_email ( $s_email ) {
        $this->set_error();
        
        $s_email = trim ( $s_email );
        
        if ( $s_email === '' || strlen ( $s_email ) < 4 || strlen ( $s_email )  > 32) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Invalid email', $s_email );
            return false;    
        }
        
        // --- 
        
        $this->s_email = $s_email;
        
        return true;
    }
    
    public function set_group ( $n_group ){
        $this->set_error();
        
        if ( is_int ( $n_group ) === false ){
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'n_group is not integer', $s_group );
            return false;
        }
        
        if ( in_array( $n_group, $this->a_group, true ) === false ){
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'invalid group', $s_group );
            return false;
        }
        
        // ---
                
        $this->n_group = $s_group;
        
        return true;        
    }
    
    public function load () {
        $this->set_error ();

        if ( $this->n_id === null ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Undefined id' );
            return false;
        }

        // ---

        $s_query = '
        SELECT
            acc_id,

            acc_login,
            acc_password,
            acc_name,

            acc_email,
            acc_group

        FROM
            account

        WHERE
            acc_id = ' . $this->n_id;

        if ( ( $r_result = $this->mysql->query ( $s_query ) ) === false || $r_result->num_rows !== 1 ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Unable to SELECT account', $s_query );
            return false;
        }

        // ---

        list (
            $this->n_id,

            $this->s_login,
            $this->s_password,
            $this->s_name,

            $this->s_email,
            $this->n_group
        ) = $r_result->fetch_row ();

        foreach ( array ( 'n_id', 'n_group' ) as $s_field ) {
            settype ( $this->$s_field, 'int' );
        }

        $r_result->close ();

        return true;
    }
    
    public function save (){
        $this->set_error ();
        
        if ( $this->n_id === null ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Undefined id' );
            return false;
        }
        
        $s_query = '
        UPDATE
            account
            
        SET
            acc_login = "'.$this->mysql->real_escape_string( $this->s_login ).'",
            acc_password = "'.$this->mysql->real_escape_string( $this->s_password ).'",
            
            acc_name = "'.$this->mysql->real_escape_string( $this->s_name ).'",
            acc_email = "'.$this->mysql->real_escape_string( $this->s_email ).'",
            
            acc_group = '.$this->n_group .'
            
        WHERE
            acc_id = '.$this->n_id;
            
        if ( $this->mysql->query ( $s_query ) === false ) {
            $this->set_error ( __CLASS__, __METHOD__, __LINE__, 'Unable to UPDATE account', $s_query );
            return false;
        }
        
        return true;    
        
    }
            
}

?>

Merci d'avance de votre aide smile

Dernière modification par xender (22-10-2008 10:29:54)

Hors ligne

 

#2 22-10-2008 10:44:35

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: Probleme de conception de mon projet sous zf

Bonjour,

Tu peux utiliser tes classes exactement comme avant le ZF. Tu les dépose dans un répertoire. Ensuite tu fais un include de ta classe comme avant et tu l'utilises comme avant. Rien ne t'empêche d'utiliser tes anciens codes exactement comme avant.

Cordialement,
Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#3 22-10-2008 11:46:51

xender
Membre
Date d'inscription: 04-11-2007
Messages: 23

Re: Probleme de conception de mon projet sous zf

ah ok, mais je dois passer a coté de fonction pratique de zf non ?

Hors ligne

 

#4 22-10-2008 12:29:54

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Probleme de conception de mon projet sous zf

Salut,

Tu peux mettre toutes tes fonctions dans le modèle, à l'exception des actions "save" et "load" qui iraient vraisemblablement dans le contrôleur.

Pour ce qui est des requêtes, tu peux les générer avec Zend_Db.

Voilà.

Hors ligne

 

#5 22-10-2008 14:00:46

xender
Membre
Date d'inscription: 04-11-2007
Messages: 23

Re: Probleme de conception de mon projet sous zf

Ok, mais pourquoi les actions save et load ne sont pas dans le model ?
J'ai pas trouvé dans la doc pour mettre tel quel mes requètes sans pdo et sans orm, je préfaire écrire mes requètes a la main, je trouve peu d'utilité a utilisé les méthodes de zend_db ou peut etre que je passe a coté de quelque chose ?

Hors ligne

 

#6 22-10-2008 15:30:22

acharrex
Membre
Lieu: Suisse
Date d'inscription: 27-04-2008
Messages: 135

Re: Probleme de conception de mon projet sous zf

Car à première vue, "save" et "load" sont des actions. Mais peut-etre n'est-ce pas le cas.

Si le mot "action" ne te dit rien, je te conseille fortement de te documenter sur le MVC (documentation officielle du ZF ou http://fr.wikipedia.org/wiki/Mod%C3%A8l … %C3%B4leur) et sur le rôle de chacun de ses composants (modèle/vue/contrôleur). Ensuite, tu sauras toi-même où placer tes fonctions.

Pour Zend_Db, il te permet de respecter l'esprit "objet" du Framework et également de pouvoir passer d'un SGBD à l'autre très facilement.

Dernière modification par acharrex (22-10-2008 15:31:22)

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