Page 1 sur 1

Les espaces noms : le retour

Posté : 08 août 2009, 13:53
par katagoto
Bonjour à toutes et à tous,

Voilà, j'ai 3 pages :
index.php :
<?php
include('include.php');

\Base\f1();
\Base\f2();
?>
include.php :
<?php
/*
**      ...
*/
namespace
{
//Pour le temps des scripts
\define('DEBUT', microtime(true));

$cb = (\extension_loaded('zlib'))? 'ob_gzhandler' : NULL;
\ob_start($cb); // tampon

\session_start();//demarage de la session

\date_default_timezone_set('Europe/Paris');

\header('Content-Type: text/html; charset=UTF-8');

// Suppression des slashes dans les superglobales
if(\get_magic_quotes_gpc())
{
        $_GET = \array_map('stripslashes', $_GET);
        $_POST = \array_map('stripslashes', $_POST);
        $_COOKIE = \array_map('stripslashes', $_COOKIE);
}

//------------------------------
// config
//------------------------------
\define('COOKIES', 365);                //jours

\define('D_FORMAT', '%d/%m/%Y %H:%i');//date en général
\define('DEBUG', true); // Si non somme en phase de tests
\define('LIST_MAIL', '...'); // Liste des adresse à mailer en cas de bug
\define('FROM_MAIL', ''); // Adresse de l'expéditeur

// Maintenance
include_once(ABS_DIR.'maintenance.class.php');
\gestion_maintenance\affiche();
}
maintenance.class.php :
<?php

/**
 * Namespace de gestion de la maintenance
 *
 * @author Katagoto
 */

namespace gestion_maintenance;

\session_regenerate_id(true);
// environs une dizaine de fonctions
J'ai le droit à :
Fatal error: Namespace declaration statement has to be the very first statement in the script in .../maintenance.class.php on line 9
J'ai rechercher et je ne comprends rien, car tout commence par des namespace, je suis perdu.
J'avais essayé sans namespace {} dans include.php mais ça ne marchait pas non plus.

D'où vient le problème ?
Par avance merci de votre aide

Re: Les espaces noms : le retour

Posté : 08 août 2009, 15:09
par Superpilou
J'ai déja entendu parler des namespace mais à quoi ca sert exactement?

Re: Les espaces noms : le retour

Posté : 08 août 2009, 15:26
par zeus
Modération :
Merci de rester dans le sujet. =;

Superpilou, si tu as une question, merci d'ouvrir un nouveau sujet.

Re: Les espaces noms : le retour

Posté : 08 août 2009, 17:34
par fab
Essaye de mettre la déclaration du namespace avant le commentaire

Re: Les espaces noms : le retour

Posté : 08 août 2009, 19:37
par katagoto
Merci de ta réponse, mais ça ne change rien, hors-mit que l'erreur est à présent à la ligne 2.

Par avance merci de votre aide

Re: Les espaces noms : le retour

Posté : 08 août 2009, 19:55
par fab
Il faut bien que tu ne laisses AUCUN espace entre <?php et namespace

ainsi tu dois avoir quelque chose comme ci-dessous pour éviter ce type d'erreur :
<?php
namespace katagoto;

?>

Re: Les espaces noms : le retour

Posté : 08 août 2009, 20:21
par katagoto
Il n'y en a aucun :
<?php
namespace gestion_maintenance;
/**
 * Namespace de gestion de la maintenance
 *
 * @author Katagoto
 */
ça peut venir du fait que mon code est en UTF-8 ?

Par avance merci de votre aide

Re: Les espaces noms : le retour

Posté : 08 août 2009, 20:29
par fab
possible essaye :
<?php
declare(encoding='UTF-8');
namespace MonProjet;
?>

Re: Les espaces noms : le retour

Posté : 08 août 2009, 21:00
par Victor BRITO
ça peut venir du fait que mon code est en UTF-8 ?
Ton code est-il édité en UTF-8 avec ou sans BOM ?

Re: Les espaces noms : le retour

Posté : 09 août 2009, 09:48
par foxdie_cs
salut ^^

dans include.php, on trouve :
...
\define('LIST_MAIL', '...'); // Liste des adresse à mailer en cas de bug
\define('FROM_MAIL', ''); // Adresse de l'expéditeur

// Maintenance
include_once(ABS_DIR.'maintenance.class.php');
ce qui équivaut à :
...
\define('LIST_MAIL', '...'); // Liste des adresse à mailer en cas de bug
\define('FROM_MAIL', ''); // Adresse de l'expéditeur

// Maintenance ( inclu )
namespace gestion_maintenance;

\session_regenerate_id(true);
// environs une dizaine de fonctions
et donc la déclaration de l'espace de nom ne se fait pas au début!

Pour info, on peut très bien mettre des commentaires ou des espaces avant un espace de nom, lol, quand même... ce serait abusé sinon.

++

Re: Les espaces noms : le retour

Posté : 09 août 2009, 11:35
par katagoto
Avec declare() ça ne marche pas, pourtant j'ai essayé de le mettre partout.
Notepad++ me dit UTF-8 en opposition à UFT-8 (sans BOM) donc ça doit être avec BOM
Merci foxdie_cs mais j'y avais pensé, et donc j'ai déclarer le namespace vide, donc principale, c'est censé résoudre ce problème mais bon :/

Par avance merci de votre aide

Re: Les espaces noms : le retour

Posté : 09 août 2009, 13:44
par fab
Je ne suis pas un expert des namespace mais ce qui me choque aussi c'est que tu essayes de définir un namespace dans un autre ce qui n'a pas grand sens à mes yeux!

Regarde ton maintenance est inclu dans ton premier namespace, qu'est-ce que tu veux obtenir par là?

Re: Les espaces noms : le retour

Posté : 09 août 2009, 15:25
par Victor BRITO
Notepad++ me dit UTF-8 en opposition à UFT-8 (sans BOM) donc ça doit être avec BOM
Dans ce cas, convertis ton fichier en UTF-8 sans BOM.

Re: Les espaces noms : le retour

Posté : 09 août 2009, 15:54
par katagoto
Je ne suis pas un expert des namespace mais ce qui me choque aussi c'est que tu essayes de définir un namespace dans un autre ce qui n'a pas grand sens à mes yeux!

Regarde ton maintenance est inclu dans ton premier namespace, qu'est-ce que tu veux obtenir par là?
Bah moi je ne voulais plus d'erreur et PHP voulais un namespace avant tout, j'ai essayé d'être conciliant :lol:
Dans ce cas, convertis ton fichier en UTF-8 sans BOM.
ça venait bien de ça, merci ;)
Et ça marche sans namespace {} ni declare()

Merci à tous