Un problème de namespace

Mammouth du PHP | 1668 Messages

18 juil. 2009, 16:15

Bonjour à toutes et à tous,

Je suis sur un serveur personnel avec PHP 5.3, j'ai donc voulu
disposer des namespace. Dans cette optique j'ai changé le
maximum de mes classes abstraite, je m'en servait comme les
namespace en C++, non je fais pas de trust. Hier, via notepad++
j'ai donc fais le mise à jour qui convient en a peu près 4 heures.
J'y ai bien re-préciser les portés, à savoir que j'ai donné le nom
absolu, et j'ai le droit à l'erreur suivante :
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4
Pour le code suivant :
<?php
include('include.php');

\Base\footer(array(
    array($lg['base']['titreIndex']),
    ));
\Base\parse('index.html');
?>
J'avais également une erreur à la ligne 2 lorsque je plaçait un \
devant include.
Je ne comprends pas pourquoi il y a ces erreurs sachant que
include.php inclus le namespace Base et que, d'après la
documentation officielle de PHP ce qui suit est légale :

<?php
namespace Foo;

function strlen() {}
const INI_ALL = 3;
class Exception {}

$a = \strlen('hi'); // appel la fonction globale strlen
$b = \INI_ALL; // accès à une constante INI_ALL
$c = new \Exception('error'); // instantie la classe globale Exception
?>
Dites moi d'où viennent ces erreurs, mais j'ai 2.514 \ dans
94 fichiers à modifier, pitié :'(

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

19 juil. 2009, 10:35

Hey :-),

Je n'ai pas compris où était ton problème car tu n'as pas donné de code ou d'exemple significatifs.
Mais tu devrais jeter un oeil sur ce billet de Pascal Martin (en 2 parties) : Namespace, les espaces de nom (partie 1).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

19 juil. 2009, 12:11

Merci pour ce liens ça m'a permit de comprendre d'où venait
mon erreur. J'ai une autre question maintenant :
Puisque la première instruction doit-être la déclaration d'un
namespace, que mettre comme nom si le premier fichier inclus
contient plusieurs namespace, est-ce que le code suivant est
correcte ? :
namespace;
Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

19 juil. 2009, 15:09

Bah essaye :-).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

19 juil. 2009, 15:34

Bah ça marche pas mieux, j'ai jamais été empiriste :/

Comment résoudre ce problème ?

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 991 Messages

19 juil. 2009, 15:40

peut être : http://blog.pascal-martin.fr/post/php-5 ... es-de-noms ?

je me suis pas encore vraiment intéressé au sujet hormis quelques lectures données par HyWan ^^
DevOps, Symfony4, Hoa

Mammouth du PHP | 1668 Messages

19 juil. 2009, 16:10

Je dois rater quelque chose, parce que ça marche toujours pas :/

Exemple :
index.php :
<?php
namespace;
\include('include.php');
\Base\test();
include.php :
<?php
namespace Base;
function test()
{
    echo 'Salut le monde !';
}
Erreur :
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 3

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4

Parse error: syntax error, unexpected T_STRING in /var/www/index.php on line 4
J'ai tout essayé, sans \ au début des fonctions, sans namespace...

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 5924 Messages

19 juil. 2009, 16:49

Pourquoi '\' alors que dans le code que tu postes on ne le voit pas ?

Mammouth du PHP | 1668 Messages

19 juil. 2009, 17:05

Pourquoi '\' alors que dans le code que tu postes on ne le voit pas ?
Parce que PHPBB c'est mal foutu, cite mon post et tu verra que
ça y est :lol:
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

Mammouth du PHP | 991 Messages

19 juil. 2009, 17:23

Je dois rater quelque chose, parce que ça marche toujours pas :/

Exemple :
index.php :
<?php
namespace;
\include('include.php');
\Base\test();
include.php :
<?php
namespace Base;
function test()
{
    echo 'Salut le monde !';
}
Erreur :
Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 3

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4

Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /var/www/index.php on line 4

Parse error: syntax error, unexpected T_STRING in /var/www/index.php on line 4
J'ai tout essayé, sans \ au début des fonctions, sans namespace...

Par avance merci de votre aide
Voici le quote , et pourquoi un "" devant l'include et devant Base ?
DevOps, Symfony4, Hoa

Mammouth du PHP | 1668 Messages

19 juil. 2009, 18:01

ça se voit qu'avant de poster le message, dans le texteaera, bref
Le \ avant Base et include, notez que ça ne marche pas même
sans, c'est pour repréciser qu'il s'agit bien de l'espace nom
globale. Je fais la même chose avec la std en C++, tout le monde
me dit que je peux utiliser use, mais je m'y retrouve mieux
comme ça et ça ne nuit pas aux performances alors bon...

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

20 juil. 2009, 10:59

Rien pigé. Ils sont où tes backslashes ? Remplace les par $$$, on y verra plus clair …
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

20 juil. 2009, 11:47

Ok, tu as raison, on y verra plus claire
include.php :
<?php
namespace Base;
function test()
{
    echo 'Salut le monde !';
}
Les codes suivant sont tous des index.php, où $ = \ et ne
marchent pas car \ ne serait pas un caractère ASCII :
<?php
namespace;
include('include.php');
Base$test();
<?php
namespace;
include('include.php');
$Base$test();
<?php
namespace;
$include('include.php');
$Base$test();
<?php
include('include.php');
Base$test();
<?php
include('include.php');
$Base$test();
<?php
$include('include.php');
$Base$test();
Voilà, je pense que ce n'est pas un bug :/

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol

ViPHP
ViPHP | 4674 Messages

20 juil. 2009, 12:26

Pourquoi déclarer namespace; ?
Pourquoi ne pas utiliser use; ?
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Mammouth du PHP | 1668 Messages

20 juil. 2009, 14:24

Si je remplace namespace; par use; dans index.php ça ne marche
toujours pas, je ne vois pas ce que tu veux dire...

Éclaire moi de tes ampoules basse consolation, euh, de tes
lanternes

Par avance merci de votre aide
"À ceux qui poursuivent leurs rêves et se spécialisent dans l'impossible" Joseph Kong

10 ans de PHP, déjà.

"moi jtrouve que katagoto il déchire!" Nagol