Précédent   Forum des professionnels en informatique > PHP > Outils > Zend > Zend Studio
Zend Studio Forum d'entraide sur la programmation PHP avec l'EDI Zend Studio. Avant de poster -> Tutoriels Zend Studio, FAQ Zend Studio
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/10/2007, 03h48   #1
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 42
Points : 11
Points : 11
Par défaut Autocomplétion et classes imbriquées

Bonjour,

Je travaille sous Zend Studio et je bloque sur une fonctionnalité qui pourrait rendre le développement plus pratique.

Comme quelques lignes de code sont plus simples à comprendre qu'une longue explication, voici le code.

Code :
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
 
<?
class classe_principale
{
    var $truc1 = "";
    var $truc2 = "";
 
    function fonction1( $param1, $param2 )
    {
        return $param1 + $param2;
    }
}
 
class classe_secondaire
{
    var $truc3 = "";
    var $truc4 = "";
 
    function fonction2( $param1, $param2 )
    {
        return $param1 + $param2;
    }
}
 
$classe_principale = new classe_principale;
 
$classe_principale->classe_secondaire = new classe_secondaire;
J'aimerai que ZendStudio reconnaisse que les deux classes sont emboîtées et active l'autocomplétion sur la classe secondaire.

Par exemple, si je fais :
Code :
1
2
 
$classe_principale->fonction1( // L'autocomplétion est activée et affiche les paramètres
Mais si je fais :
Code :
1
2
 
$classe_principale->classe_secondaire->fonction2( // Il n'affiche pas l'autocomplétion
Je ne sais pas pourquoi quelques fois il arrive à autocompléter certaines classes imbriquées mais la plus part du temps, ca ne fonctionne pas.

Que me conseillez vous?

Merci d'avance pour vos conseils.

A+
vtuning.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2007, 03h01   #2
Nouveau Membre du Club

 
Avatar de Alban_Zend
 
Inscription : janvier 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 25
Points : 25
Points : 25
Il faut documenter le code : @return.
__________________
Alban Hanry
Zend Technologies France
http://www.zend.com/fr/
Alban_Zend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 06h08   #3
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 42
Points : 11
Points : 11
Merci pour ton aide.

Tu pourrais être plus précis s'il te plaît?

J'ai fait des recherches sur ce que tu me proposes, je trouve PHPDocumentor. Il me semble que Zend Studio se base sur la syntaxe de celui ci pour fournir l'auto complétion mais je ne sais vraiment pas comment m'en servir.

Merci d'avance pour tes conseils.

A+
vtuning.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 00h38   #4
Nouveau Membre du Club

 
Avatar de Alban_Zend
 
Inscription : janvier 2007
Messages : 25
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 25
Points : 25
Points : 25
Désolé de ma réponse tardive, je reviens de la ZendConf

Voici un exmeple de code documentée (en utilisant click droit ajouter une description dans l'inspecteur d'objet de Zend Studio) qui montre la complétio qui marche.

J'ai rajouté var $classe_secondaire comme propriété (non anonyme) dans classe_principale

Citation:
<?php
/**
* Enter description here...
*
*/
class classe_principale
{
/**
* Enter description here...
*
* @var string
*/
var $truc1 = "";
/**
* Enter description here...
*
* @var string
*/
var $truc2 = "";
/**
* Enter description here...
*
* @var classe_secondaire
*/
var $classe_secondaire;

/**
* Enter description here...
*
* @param unknown_type $param1
* @param unknown_type $param2
* @return unknown
*/
function fonction1( $param1, $param2 )
{
return $param1 + $param2;
}


}

/**
* Enter description here...
*
*/
class classe_secondaire
{
/**
* Enter description here...
*
* @var string
*/
var $truc3 = "";
/**
* Enter description here...
*
* @var string
*/
var $truc4 = "";

/**
* Enter description here...
*
* @param unknown_type $param1
* @param unknown_type $param2
* @return unknown
*/
function fonction2( $param1, $param2 )
{
return $param1 + $param2;
}
}

$classe_principale = new classe_principale;

$classe_principale->classe_secondaire = new classe_secondaire;
si tu fais :
$classe_principale->classe_secondaire->
puis CTRL+ESPACE tu verras la complétion.

Il faut documenter les propriétés et les méthodes pour avoir la complétion

Voilà j'espère que cela est plus clair comme cela.
__________________
Alban Hanry
Zend Technologies France
http://www.zend.com/fr/
Alban_Zend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/10/2007, 04h31   #5
Candidat au titre de Membre du Club
 
Inscription : juin 2007
Messages : 42
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 42
Points : 11
Points : 11
Merci pour ta réponse !!!

Ca fonctionne, après quelques hésitations

Je ne comprenais pas pourquoi (en utilisant ta méthode), les classes imbriquées n'étaient accessibles que dans le fichier qui contient la classe principale.

La solution était toute simple, j'avais une copie dans le répertoire contenant une ancienne version de la classe principale. Le parseur devait se mélanger les pinceaux.

En tout cas, merci, ca fonctionne. C'est plus pratique comme ca.

Tant que j'y suis, je voudrais approfondir cela.

Je ne sais pas à l'avance qu'elles classes seront imbriquées dans la classe principale.
Y a t'il un moyen de faire fonctionner l'autocomplétion pendant l'instanciation de la classe?

Merci encore pour ton aide.
vtuning.net est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h37.


 
 
 
 
Partenaires

Hébergement Web