JeuWeb - Crée ton jeu par navigateur

Version complète : [Résolu][POO] recuperer un tableau
Vous consultez actuellement la version basse qualité d'un document. Voir la version complète avec le bon formatage.
Pages : 1 2
Bon je capitule pour ce soir,[/quote]

Je vous expose le problème, j'aimerais beaucoup pouvoir récupérer le contenu du tableau $var[] en dehors de cette classe

j'ai beau essayer mais rien a faire.
Code PHP :
    class Iterate{
        
            public 
$var;

        function 
IterateThis($req,$champs){    
        
            
            
$this->search = new Iteration($req);

            foreach(
$this->search as $this->clef => $this->occurences) {
                
$this->resultat[] = $this->occurences;
            }

            if(!
$this->resultat){
                print 
'resultat inéxistant';
                exit();
            }
    
            
$this->result = new RecursiveIteratorIterator(new Tableau_Iterator($this->resultat,1));


            foreach(
$this->resultat AS $this->clef=>$this->occurences){
            
                for(
$i 0$i count($champs); $i++){//je calcule le nombre d'entrée a recherché contenu das le array "champs"
                    
                    
$this->receipt $champs[$i];
                    
$var[$i] = $this->occurences[$this->receipt].' ';
                    print 
$var['1'];
                }
            }
            return 
$var;//<----rarghh!
        
}
    } 

et je voudrais donc la récupérer dans une autre méthode qui ne découle pas de cette classe.
il me manque un truc mais la doc' PHP5 c'est pas facile a trouver mis a part manuelphp, mais lorsque l'ont ne sait pas trop ce que l'ont cherche... :/
enfin bref, si vous avez une solution chui' preneur 34
erff tu veut dire que je doit l'appeler comme ca?
Code PHP :
$Iterate->var 
depuis une autre methode?
ca me parait bizzare tu peut me faire un exemple vite fait de l'appel?
bon, c'est bien ce que j'avais fait avec new mais rien a faire ca ne veut pas, je n'arrive pas a le recuperer.
je re verrais ca demain au clair,
Merci pour ton aide 34
oui j'ai fait comme tu m'as dit, mais je laisse de coté pour ce soir, je reprendrais ça au clair a tete reposé demain.
je pense que ça doit etre bancale au niveau de mes arguments.
Je doute que tu puisses utiliser var comme nomenclature, c'est une mot-clef réservé :s
Avec une coloration syntaxique, tu l'aurais vu direct; donc je te conseil déjà de changer le nom de cette variable.

Ce qui donne ce qui suit :
Code PHP :
<?php
class Iterate
{
    public 
$variable;
    
    private 
$search;
    private 
$resultat;
    
    function 
IterateThis($req$champs)
    {
        
$this->search = new Iteration($req);
        
        foreach(
$this->search as $this->clef => $this->occurences)
        {
            
$this->resultat[] = $this->occurences;
        }
        
        if(!
$this->resultat) {
            print 
'resultat inéxistant';
            exit();
        }
        
        
$this->result = new RecursiveIteratorIterator(new Tableau_Iterator($this->resultat1));
        
        foreach(
$this->resultat AS $this->clef => $this->occurences)
        {
            
// Je calcule le nombre d'entrées a rechercher contenu dans le array "champs"
            
$iCount count($champs);
            for(
$i 0$i $iCount$i++)
            {
                
$this->receipt      $champs[$i];
                
$this->variable[$i] = $this->occurences[$this->receipt].' ';
                print 
$variable['1'];
            }
        }
        
        return 
$this->variable;
    }
}

?>
$var oui !
Mais certainement pas $this->var !

De plus, petit hors sujet mais qui a son sens dans ce post tout de même.

Je commence, vraiment, à être désolé de voir seulement des public pour les données membres d'une classe.
A croire que sur le net, même les pro oublie la notion d'encapsulation des données.
Vous vous en rendrez compte tout seul, le jour où vous allez devoir faire de l'héritage, cela ne marchera pas comme vous le voudrez et vous allez vous tirer les cheveux pour comprendre ce qu'il se passe :(
Ben, en parlant d'encapsulation, j'ai encore du mal à déterminer quand un attribut doit être protéger/privé ou public. En ce moment je mets du privé partout car je trouve les getXXX() et setXXX() sexy, mais j'avoue que si quelqu'un a une explication, je suis preneur. 2


Sephi-Chan
Ben dans mon cas, en dehors de l'utilisation d'un Framework, je procédais comme cela :

Code PHP :
$user = new User();
$user->setLogin($_POST['login']);
$user->setPassword($_POST['password']);
$user->load(); 

J'aimais bien, ça me permet d'avoir un code clair. J'utilise ensuite l'objet $user, que je mets en session. Quand je modifie quelque chose, j'utilise les $user->setXXX($xxx); puis je fais un $user->save();


Sephi-Chan
Dans tous langages, il y a des mots clefs et on le sait tous, l'utilisation de ceux-ci est interdite sauf si le langage le permet comme php apparement mais quand on veut éviter de voir apparaitre des bogues, on les évite.
MySQL aussi permet l'utilisation de mot-clefs mais a une condition.

Exemple :
Code PHP :
// On a un champ datetime qui a enregistré la date et l'heure de connection et on veut récupérer ce champ

// L'éxécution de la requête suivante échouera !!
$sSQL "SELECT datetime FROM utilisateur WHERE id = 1";
// L'éxécution de la requête suivante sera fonctionnelle
$sSQL "SELECT `datetime` FROM utilisateur WHERE id = 1"
Vous vous êtes jamais demandé pourquoi PMA vous retourner toujours vos champs englobé de ces quotes ? 16

Donc, pour finir, un conseil que chacun prendra comme il le veut : ne jamais utiliser de mot clefs


Ensuite, accéder aux données cela peut arriver n'importe où, n'importe quand.
Code PHP :
<?php
class Utilisateur
{
    private 
$sNom;
    
    public 
__contruct($sNom)
    {
        
$this->sNom $sNom;
    }
    
    public 
getNom()
    {
        return 
$this->sNom;
    }
    
}

$oUtilisateur = new Utilisateur('Pierre');
echo 
'Salut '.$oUtilisateur->getNom().' et bienvenue sur JeuPHP !';

?>
Pourquoi ce topo sur les noms réservés (bien que ça ne puisse pas faire de mal de le rappeler 16) ? D'autant que datetime n'a pas l'air d'un nom réservé s'il on se réfère à MySQL - Cas des mots réservés MySQL.

Si j'utilise ma méthode, c'est justement pour avoir une API très normalisée. Que l'on s'inscrive, que l'on se connecte ou que l'on édite son profil, ça fait toujours appel à load() ou à save(). Je n'ai pas de login($login, $password), ni de register($login, $password, $email, etc.).

M'enfin, maintenant que je m'essaye aux Frameworks, la question ne se pose plus trop puisqu'ils ont leur fonctionnement.

Ma question, c'est plutôt : quand décide-t-on d'utiliser private/protected ou public. Y a-t-il une astuce ?


Sephi-Chan
Pages : 1 2
URLs de référence