1

Bon, j'ai un choix technique à faire, et je ne sais pas trop lequel faire...
Je développe une kopapplication PHP que je voudrais la plus indépendante possible d'autres. Cette application gère des échanges inter bases de données et inter annuaires, le tout de plusieurs types. C'est pour ça que j'aimerai autant que possible ne pas ajouter de base de donnée spécifique à cette application, mais j'ai besoin d'enregistrer quelque part des paramètres d'utilisation (typiquement, les paramètres de connexion aux différentes bases/annuaires, ainsi que deux ou trois autres bricoles).
Quelle solution me conseillez-vous ?
Un document XML ? Est-ce que PHP sait écrire et modifier un document XML existant aussi simplement qu'une base de données ?
Un fichier CSV ? C'est pas spécialement adapté, mais bon, au pire...
Une base de données au format fichier ? Est-ce que PHP sait gérer un format de base de données fichier nativement, sans avoir besoin d'outil supplémentaire sur le serveur ?
Et surtout, vu qu'il y aura des mots de passes stockés en clair (ou faiblement chiffrées), est-ce que ces solutions permettent - avec une sécurité au niveau de l'OS à la charge de la personne qui met en place l'application - une sécurité suffisante ?
avatar

2

vu que tu as l'air d'apprécier le principe "base de données", sans vouloir faire appel à un serveur pour ça, pourquoi ne pas utiliser une DB sqlite ?
ça stocke la DB dans un seul fichier, et il y a ce qu'il faut en PHP 5 pour les manipuler ; et ça fait du SQL "standard"
(par exemple, firefox stocke, depuis la v3 il me semble, une partie de tes préférences et autres dans une DB sqlite)

sinon :
Nil (./1) :
Est-ce que PHP sait écrire et modifier un document XML existant aussi simplement qu'une base de données ?

en PHP 5, tu as les classes DOM* (DOMDocument, DOMElement, ...) => relativement facile, si tu sais un peu comment fonctionne DOM
si tu sais comment marche DOM, comptes en gros une demi-journée pour t'y mettre en PHP
Nil (./1) :
Un fichier CSV ? C'est pas spécialement adapté, mais bon, au pire...

moué, bof ^^
(pense aux fonctions fgetcsv et consœurs ^^ )
Nil (./1) :
Est-ce que PHP sait gérer un format de base de données fichier nativement, sans avoir besoin d'outil supplémentaire sur le serveur ?

Ah ben j'avais lu trop vite : SQLite est exactement ce que tu recherches, à ce niveau.

sécurité > dans les trois cas, tu as un fichier sur le disque => les trois se valent : à toi de te débrouiller
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

3

Ok, parfait, je ne savais pas que SQLite n'avait besoin de rien, c'est impec, c'est exactement ce dont j'ai besoin smile

Bon ben problème résolu... si tout était aussi simple et rapide cheeky
avatar

4

Nil (./3) :
c'est exactement ce dont j'ai besoin smile.gif

smile

par contre, à noter quand même, l'extension "sqlite" de PHP correspond à SQLite 2 (qui est pas tout jeune)
Si tu pars sur un nouveau projet, et que tu es admin de ton serveur, tu peux éventuellement réfléchir à l'utilisation de l'extension "sqlite3", qui permet de s'interfacer avec une DB SQLite 3 (et sqlite2 et sqlite3 ne sont pas compatibles)
Si tu pars sur du PDO (via l'extension "pdo_sqlite"), de mémoire, il me semble que ça fait du sqlite3 par défaut, mais que tu peux lui dire de faire du sqlite2 via une option dans le DSN
Si tu rajoutes une couche ORM au dessus, ça dépend de la couche ORM ; certaines acceptent les DB SQLite2 ; d'autres ne veulent pas en entendre parler (ou j'ai pas trouvé l'option ^^ )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

5

Hum, en fait, mon projet est destiné à du PHP 5 minimum, donc si j'ai l'assurance que PHP 5 a les extension SQLite3 disponibles dans la plupart des distributions, alors je vais me diriger vers ça.

Enfin, en même temps, je viens de lire la présentation de PDO... comme je viens d'un mode quasi exclusivement PHP4, je ne connaissais pas, ça a l'air vraiment bien. A priori, je dirai que c'est plus propre de travailler avec une classe d'abstration, mais tu en penses quoi (sachant que je ne cherche pas l'ultra performance).

Pour l'ORM, je n'y suis pas encore, j'avoue que je ne vois pas ce que ça change avec l'objet-relationnel, et je pense que j'ai déjà assez de boulot pour l'instant (je me remets à la POO avec PHP, et je découvre des trucs que je n'avais jamais manipulé en Java, comme l'opérateur :: ; sans compter le fait que la POO, c'est plus tout jeune dans ma petite tête).
avatar

6

Je ne suis pas sûr que même avec PHP5, tu aies SQLite 3 (il ne me semble pas, en fait)

Mais PDO est vraiment ultra simple d'emploi, c'est à mon avis la solution la plus simple
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

7

RRRHHHHHHHHHAAAAAAAAAAAAAAAAAAAA tin de firefox de ******** qui affiche pas une demande de confirmation quand on fait un raccourci clavier qui entraine la disparition d'une page dans laquelle il y a un form sur lequel on a commencé à saisir des données bang
bon... on recommence...
Nil (./5) :
si j'ai l'assurance que PHP 5 a les extension SQLite3 disponibles dans la plupart des distributions

La meilleure façon d'avoir une piste à ce sujet est de dl les sources de PHP et de regarder si dans les deux confs "par défaut" fournies, l'extension est activée.
Si on prend PHP 5.2.8 (dernière version en date de la branche 5.2 (elle date d'il y a un mois)) :
squale@shark: ~/temp/5/php-5.2.8
$ grep 'sqlite' php.ini-recommended
;extension=php_pdo_sqlite.dll
;extension=php_sqlite.dll
[sqlite]
;sqlite.assoc_case = 0
squale@shark: ~/temp/5/php-5.2.8
$ grep 'sqlite' php.ini-dist
;extension=php_pdo_sqlite.dll
;extension=php_sqlite.dll
[sqlite]
;sqlite.assoc_case = 0

=> sqlite tout court n'est pas activée dans les deux confs par défaut fournies avec PHP sad
ne parlons donc même pas de sqlite3...

Dans la pratique, sqlite2, ça me semble probable que ce soit là -- ne serait-ce que installé même si non activé, auquel cas c'est deux lignes à décommenter dans la conf PHP.
sqlite3, par contre, chaque fois que j'en ai eu besoin, il a fallu que je l'installe à la main (toujours sur des ubuntu server)

Je ne parle pas de PHP 5.0 (parce que ça n'existe à peu de chose près pas / plus) ; PHP 5.1 c'est plutôt vieux aussi...


Pour PDO / Sqlite, à voir si pdo_sqlite gère sqlite3 sans installer d'extension spécifique SQLite3, cela dit...
(Pas testé)

Nil (./5) :
comme je viens d'un mode quasi exclusivement PHP4, je ne connaissais pas, ça a l'air vraiment bien. A priori, je dirai que c'est plus propre de travailler avec une classe d'abstration, mais tu en penses quoi (sachant que je ne cherche pas l'ultra performance).


Sauf pour des simples scripts utilitaires / jetables de max une centaine de lignes, je fais à peu près toujours du PDO.

Notons que les frameworks ORM les plus connus (Doctrine, Propel depuis sa dernière version), et les gros frameworks (c'est le cas pour Symfony qui utilise propel ou doctrine, ou pour Zend Framework (ZF offre la possibilité d'accéder à une DB MySQL (uniquement) sans PDO, pour les hébergements qui n'ont pas PDO, mais ce n'est pas particulièrement recommandé)) passent aussi par PDO.

Question perf, je ne sais pas ce que ça donne ; mais je n'ai jamais (du moins, dans les deux dernières années) entendu vraiment de négatif à ce niveau.
(Par contre, pour l'ORM Propel, passer d'un couche d'abstraction "full-php" à PDO dans la dernière version a pas mal fait gagner, parait-il)

Nil (./5) :
Pour l'ORM, je n'y suis pas encore

c'est relativement nouveau dans la monde PHP, mais j'en entends de plus en plus parler -- et quand je vois le genre de choses que sait faire Doctrine (je ne connais pas Propel, mais ça doit faire le même genre de choses, même si Doctrine est l'ORM qui semble prendre le dessus en ce moment), je me dis que pour un gros projet, ça peut valoir le coup -- surtout si tu es améné à supporter plusieurs moteurs de DB différents.
(ce qui n'est probablement pas ton cas, mais peut être justifié pour, typiquement, un projet libre)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

8

Nil (./1) :
Et surtout, vu qu'il y aura des mots de passes stockés en clair (ou faiblement chiffrées), est-ce que ces solutions permettent - avec une sécurité au niveau de l'OS à la charge de la personne qui met en place l'application - une sécurité suffisante ?

Et pkoi tu aurais des mdp en clair et/ou faiblement chiffre? C'est pas possible d'avoir une solution correcte?
Securite au niveau de l'OS, ca va de soit. Pense a la secu niveau applicatif...

9

nEUrOO (./8) :
Nil (./1) :
Et surtout, vu qu'il y aura des mots de passes stockés en clair (ou faiblement chiffrées), est-ce que ces solutions permettent - avec une sécurité au niveau de l'OS à la charge de la personne qui met en place l'application - une sécurité suffisante ?

Et pkoi tu aurais des mdp en clair et/ou faiblement chiffre? C'est pas possible d'avoir une solution correcte? Securite au niveau de l'OS, ca va de soit. Pense a la secu niveau applicatif...


Je ne sais pas, je n'arrive pas à trouver de solution à ce niveau... mais je suis preneur si vous avez.

En clair, l'outil doit permettre de peupler/synchroniser des annuaires en fonction de bases de données et/ou d'annuaires. Il y aura tout un côté purement LDAP de définition du système d'information (individus, ressources, génération et analyse de schémas), et un côté synchronisation, où l'application se connecte aux bases de données déclarées (il y a toute une partie de l'application qui n'est pas web, mais qui est gérée par un cron, pour tout ce qui est synchronisations automatiques). Donc pour cette partie, j'ai besoin à un moment donné d'avoir les mots de passes en clair pour m'authentifier aux bases, donc soit que ça soit dans un chiffrement à deux sens, soit que ça soit en clair.

Après, il y a probablement des méthodes de cryptage à base de clé, mais je ne sais pas
- comment les gérer
- comment les manipuler en PHP
avatar

10

Pour crypter tes mots de passe, la solution la plus simple, ça reste le md5.
Tu as juste à faire md5("password") et ton mot de passe "password" sera crypté.
Techniquement, tu ne peux pas le décrypter (les chinois, eux, ils peuvent grin).

Sinon, y'a le sha256 qui est encore plus sécurisé. Il n'est pas de base dans php mais des classes existent.
>>> [URL=http://novaworld.canalblog.com/]Un ptit tour dans ma chambre ??[/URL] <<< En cours de remplissage :p

[b]-> Code Amis MarioKart : 06 87 98 47 83 29
-> Code Amis Animal Crossing : 42 52 87 32 56 89

11

Nova (./10) :
Pour crypter tes mots de passe, la solution la plus simple, ça reste le md5.
Tu as juste à faire md5("password") et ton mot de passe "password" sera crypté.
Techniquement, tu ne peux pas le décrypter (les chinois, eux, ils peuvent grin).

Sinon, y'a le sha256 qui est encore plus sécurisé. Il n'est pas de base dans php mais des classes existent.

mais justement, il veut pouvoir le déchiffrer grin

http://fr.php.net/manual/fr/intro.mcrypt.php ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

12

Je connais mcrypt (je l'utilise pour générer mes mots de passes SSHA1), mais je pensais que les chiffrements proposés étaient unidirectionnels ?!
avatar

13

bah y a de fortes chances que la fonction mdecrypt_generic soit pour déchiffrer, non ? #modcoquin#
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

14

Oué bon, t'as fini de te moquer de moi avec ton smiley provocateur ? embarrassed
avatar

15

Nil (./9) :
j'ai besoin à un moment donné d'avoir les mots de passes en clair pour m'authentifier aux bases, donc soit que ça soit dans un chiffrement à deux sens, soit que ça soit en clair.


Je n'avais pas vu ça :/
Du coup, je sèche, je n'utilise que de l'unidirectionnel.


>>> [URL=http://novaworld.canalblog.com/]Un ptit tour dans ma chambre ??[/URL] <<< En cours de remplissage :p

[b]-> Code Amis MarioKart : 06 87 98 47 83 29
-> Code Amis Animal Crossing : 42 52 87 32 56 89

16

enfait, ce que tu veux pas sur une apps comme ca, c'est que tes mdp de database leakent par l'application; ca doit etre secure cote server.
donc rien qu'utiliser un 3DES avec un mdp (pass(unique id de la machine comme le HD number...) + salt(db ou connecteur)) serait deja mieux...

sinon, tu pourrais te faire envoyer les secrets par le reseau a chaque fois (certificats d'ID sur la machine, diffie hollman, etc.) mais ca risque d'etre chiant a faire et ca depend de ta charge aussi, et sur quel type de reseau tu es.

17

nEUrOO (./16) :
sinon, tu pourrais te faire envoyer les secrets par le reseau a chaque fois (certificats d'ID sur la machine, diffie hollman, etc.) mais ca risque d'etre chiant a faire et ca depend de ta charge aussi, et sur quel type de reseau tu es.


Ben en fait, l'objectif est clairement de ne pas parasiter les autres services, que ça soit le plus indépendant possible de l'environnement (donc qu'il n'y ait pas à paramétrer d'autres serveurs pour de l'envoi de données, par exemple).

Quand j'arriverai à cette étape du développement, je verrai à utiliser un 3DES comme tu suggères, puis à paramétrer ça pour que ça soit lu d'un dossier non accessible depuis le net.

D'ailleurs, à ce propos, est-ce qu'il y a des normalisations au niveau des dossiers utilisés pour le stockage de fichiers de configuration pour une appli web de façon privée ? Est-ce que ça va dans /var/monappli/, /var/www/monappli/, /etc/monappli/ ?
avatar

18

Plop, je profite de ce topic pour poser d'autres questions "débiles".
J'utilise phpDocumentor pour commenter mon code, et je ne vois pas de normalisation pour documenter les interfaces. Est-ce que quelqu'un a déjà fait ça ? Ou est-ce qu'il n'y a que moi qui déclare mes interfaces en PHP avant d'implémenter ?
avatar

19

beh deja si tu mets ca dans ton www/ ca risque d'etre public... apres, ca depend de ta configuration, tu t'en fous un peu en fait, tant que ton apps a les droits et que c'est pas visible depuis le net.

20

Oué, disons qu'il y a certaines configurations ou les fichiers ne sont publics que dans www/public, le reste est accessible uniquement pour localhost...
En fait mais question était surtout de savoir où c'était "propre" que ça soit au niveau de la logique de l'arborescence Unix/Linux.
avatar

21

y a pas généralement un /www-data qui sert à ça ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

22

Hem ptetre, j'ai souvenir d'avoir vu ça sur des Debian, effectivement.
avatar

23

bon ça semble pas prioritaire dans tes besoins, mais ça coute rien à rappeler, SQLite ça gère pas les accès concurrents. M'enfin c'est pareil que si tu y allais à coup de fichiers quoi wink
Sinon, tu peux regarder du côté de YAML, c'est pas mal non plus, moins verbeux et plus lisible que le XML
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

24

Nil (./12) :
Je connais mcrypt (je l'utilise pour générer mes mots de passes SSHA1), mais je pensais que les chiffrements proposés étaient unidirectionnels ?!

de mémoire, tu as des algos de hash (genre md5) et des algos de cryptage/décryptage (genre 3DSA)
Nil (./17) :
D'ailleurs, à ce propos, est-ce qu'il y a des normalisations au niveau des dossiers utilisés pour le stockage de fichiers de configuration pour une appli web de façon privée ? Est-ce que ça va dans /var/monappli/, /var/www/monappli/, /etc/monappli/ ?

rien de normalisé de manière générale (quand il y a des conventions / habitudes, c'est plus lié à un Framework, en général, qu'à PHP lui-même qui te laisse libre)
Mais deux règles générales :
- mettre le fichier en dehors de l'arborescence web
- lui mettre une extension qui fasse qu'il ne soit pas rendu tel-quel par le serveur (surtout si le premier point n'est pas possible) ; genre pour un fichier php, ne pas utiliser ".php.inc", mais ".php" pour que si quelqu'un appelle le fichier, il n'ait pas les sources
Nil (./18) :
Ou est-ce qu'il n'y a que moi qui déclare mes interfaces en PHP avant d'implémenter ?

Tu n'es pas le seul ^^
Nil (./18) :
je ne vois pas de normalisation pour documenter les interfaces

Aucune idée de ce que dit (ou non) phpdoc à ce niveau.
A tout hasard, voici un exemple issu des sources de Doctrine :
/**
 * This adapter interface should be implemented by all custom adapters
 *
 * @author      Konsta Vesterinen <kvesteri@cc.hut.fi>
 * @license     http://www.opensource.org/licenses/lgpl-license.php LGPL
 * @package     Doctrine
 * @subpackage  Adapter
 * @link        www.phpdoctrine.org
 * @since       1.0
 * @version     $Revision: 4164 $
 */
interface Doctrine_Adapter_Interface


Et un autre, issus des sources de zend framework :
 * @category   Zend
 * @package    Zend_Acl
 * @copyright  Copyright (c) 2005-2008 Zend Technologies USA Inc. (http://www.zend.com)
 * @license    http://framework.zend.com/license/new-bsd     New BSD License
 */
interface Zend_Acl_Assert_Interface
{
    /**
     * Returns true if and only if the assertion conditions are met
     *
     * This method is passed the ACL, Role, Resource, and privilege to which the authorization query applies. If the
     * $role, $resource, or $privilege parameters are null, it means that the query applies to all Roles, Resources, or
     * privileges, respectively.
     *
     * @param  Zend_Acl                    $acl
     * @param  Zend_Acl_Role_Interface     $role
     * @param  Zend_Acl_Resource_Interface $resource
     * @param  string                      $privilege
     * @return boolean
     */
    public function assert(Zend_Acl $acl, Zend_Acl_Role_Interface $role = null, Zend_Acl_Resource_Interface $resource = null,
                           $privilege = null);
}


En gros, ça reste proche d'une classe non interface ^^
Flanker (./21) :
y a pas généralement un /www-data qui sert à ça ?

pas que je sache (ce n'est pas une norme / convention que j'aie déjà entendu, en tout cas)
des fois, tu as un /var/htdocs ou /var/www mais c'est généralement dans /var, par défaut
après, tu mets bien ça où tu veux ^^

kim (./23) :
SQLite ça gère pas les accès concurrents

Il n'y a pas un lock en écriture niveau fichier ?
(donc lock de toute la DB lorsqu'une personne essaye d'écrire)
=> Cf http://sqlite.org/faq.html#q5
Pour un extrait :
Multiple processes can have the same database open at the same time. Multiple processes can be doing a SELECT at the same time. But only one process can be making changes to the database at any moment in time, however.

avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

25

ben pour moi accès concurrent c'est au niveau update. En gros, pas d'update sur deux données d'une meme table par exemple...
avatar
Il n'a pas de mots
Décrire son mépris
Perdre les rênes
Il a perdu la foi

26

bah, SQLite fait en sorte que ça ne parte pas dans les choux, dans ce cas : tes deux updates sont fait l'un après l'autre (puisque le premier locke la DB -- donc la table)
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

27

Merci squale ^^ (en fait, ma question sur les interfaces revenait à demander si on documentait deux fois, une fois pour l'interface et une fois pour l'implémentation ; a priori, je vais rester sur l'interface uniquement).
avatar

28

Nil (./27) :
en fait, ma question sur les interfaces revenait à demander si on documentait deux fois, une fois pour l'interface et une fois pour l'implémentation

heu... ah, ok ^^

Si je reprend mes deux exemples de tout à l'heure, à première vue :
- Doctrine documente les méthodes dans implémentations, et pas dans l'interface (dans l'exemple reproduit plus haut, il y a un docblock au niveau "interface", mais pas au niveau des méthodes dans l'interface)
- ZF fait plus compliqué ; si je prend un exemple :
interface Zend_Server_Interface
{
...
    /**
     * Attach a class to a server
     *
     * The individual implementations should probably allow passing a variable
     * number of arguments in, so that developers may define custom runtime
     * arguments to pass to server methods.
     *
     * Namespacing is primarily for xmlrpc, but could be used for other
     * implementations as well.
     *
     * @param mixed $class Class name or object instance to examine and attach
     * to the server.
     * @param string $namespace Optional namespace with which to prepend method
     * names in the dispatch table.
     * methods in the class will be valid callbacks.
     * @param null|array Optional array of arguments to pass to callbacks at
     * dispatch.
     * @return void
     */
    public function setClass($class, $namespace = '', $argv = null);
...

...
et class Zend_Soap_Server implements Zend_Server_Interface
{
...
    /**
     * Attach a class to a server
     *
     * Accepts a class name to use when handling requests. Any additional
     * arguments will be passed to that class' constructor when instantiated.
     *
     * @param mixed $class Class name or object instance to examine and attach
     * to the server.
     * @param mixed $arg1 Optional argument to pass to class constructor
     * @param mixed $arg2 Optional second argument to pass to class constructor
     * dispatch.
     * @return Zend_Soap_Server
     * @throws Zend_Soap_Server_Exception if called more than once, or if class
     * does not exist
     */
    public function setClass($class, $arg1 = null, $arg2 = null)
    {

En gros, tu as dans l'interface des commentaires sur ce que doit faire la méthode, et à quoi correspondent les params / retours (ce qui correspond au rôle de l'interface, après tout), ainsi que des commentaires généraux sur ce que les implémentations pourraient faire.
Côté implémentation, tu as ce qui implémente l'interface qui est copié-collé (ce que fait la méthode, les params), et, éventuellement, une description spécifique

La solution Zend est la plus complète, mais la plus lourde à maintenir.
Perso, j'ai l'habitude de commenter au max l'interface, pour que ceux qui l'implémenteront sâchent quoi faire, mais je ne copie-colle généralement pas quand j'implémente : je ne met dans mon implémentation que ce qui est spécifique à l'implémentation... (mais après, je ne sais pas ce que ça donne en termes de type-hint et de phpdoc ^^ )

avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

29

Oué et surtout je ne sais pas comment va réagir PHPDoc avec deux commentaires différents pour une même fonction trifus... enfin bon, je vais rester sur une documentation simple de l'interface ^^.
avatar

30

Nil (./29) :
je ne sais pas comment va réagir PHPDoc avec deux commentaires différents pour une même fonction trifus.gif

en toute logique, il prend le commentaire de la méthode, sans chercher à vérifier si c'est l'implémentation d'une interface ou pas... Mais jamais testé ^^
Nil (./29) :
je vais rester sur une documentation simple de l'interface ^^

Tu pourras poster ce que ça donne en terme de phpdoc générée ?
(en particulier : est-ce que la phpdoc générée pour l'implémentation reprend bien automatiquement les informations qui avaient été renseignées pour l'interface ? )
(si tu utilise Eclipse PDT 2 pour coder, la même information m'intéresse au niveau de l'auto-complétion et des type-hint, qui se base sur la phpdoc, d'ailleurs cheeky )
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall