[SPL]SplFileInfo::setInfoClass()

Mammouth du PHP | 684 Messages

13 mars 2006, 15:56

Salut.

Quelqu'un a-t-il déjà utilisé la SPL pour les fichiers ??? J'essaye de comprendre comment les méthodes fonctionnent mais pour l'instant setInfoClass() et getFileInfo() me retournent cette erreur :

Code : Tout sélectionner

Warning: SplFileInfo::setInfoClass(): bad type specifier while parsing parameters
Dans la documentation, il demande un paramètre optionnel. Voici le prototype :

Code : Tout sélectionner

setFileClass (string class_name="SplFileObject")
J'ai essayé de mettre le nom de la classe "SplFileObject" mais le résultat est le même.
J'ai ensuite regarder dans le code source de la SPL (le code en C). Ils font quelque chose que je ne comprend pas qui parait incohérent.

Code : Tout sélectionner

/* {{{ proto SplFileObject SplFileInfo::setInfoClass([string class_name]) Class to use in getFileInfo(), getPathInfo(), getSubPathInfo() */ SPL_METHOD(SplFileInfo, setInfoClass) { spl_filesystem_object *intern = (spl_filesystem_object*)zend_object_store_get_object(getThis() TSRMLS_CC); zend_class_entry *ce = spl_ce_SplFileInfo; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|C", &ce) == FAILURE) { return; } intern->file_class = ce; }
Si l'on regarde bien ce bout de code, et surtout le if () sur le zend_parse_parameters le deuxième paramètre ("|C") n'est pas dans la documentation de PHP (dans les sources, le fichier README.PARAMETER_PARSING_API).

Je vous demande votre avis avant de me lancer dans un report de bugs.
------------------------------
Pour information : PHP version 5.1.2
------------------------------
Zigz4g

Mammouth du PHP | 983 Messages

16 mars 2006, 17:38


Mammouth du PHP | 684 Messages

16 mars 2006, 18:31

Oui cela m'aide a bien comprendre pourquoi ils ont developper la possibilite de changer de classe pour faire une gestion de fichier.

Le dernier exemple de la page est tres parlant sur comment faire une nouvelle implementation de la classe SplFileObject pour gerer les fichiers.

Malheureusement, le bout de script me retourne la meme erreur que je formule dans mon premier post. Il refuse de prendre mon parametre (string celon la doc) en m'informant par un :

Code : Tout sélectionner

Warning: SplFileInfo::setFileClass(): bad type specifier while parsing parameters in /var/www/html/test/test-spl.php on line 38 Fatal error: Uncaught exception 'RuntimeException' with message 'Operation not supported' in /var/www/html/test/test-spl.php:39 Stack trace: #0 /var/www/html/test/test-spl.php(39): SplFileInfo->openFile() #1 {main} thrown in /var/www/html/test/test-spl.php on line 39
Comme je le demande plus haut dans ce poste, je voudrais savoir si quelqu'un connais le code "|C" qui est passer dans le developpement de l'extension SPL. Toujours en fonction de la documentation, on ne peut pas mettre se parametre ("|C") pour parser les options d'une fonction dans le moteur de Zend.

Quelqu'un peut-il confirmer ou intervenir sur cette question. Merci d'avance.
Zigz4g