Les espaces noms : le retour

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Les espaces noms : le retour

Re: Les espaces noms : le retour

par katagoto » 09 août 2009, 15:54

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

Re: Les espaces noms : le retour

par Victor BRITO » 09 août 2009, 15:25

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

par fab » 09 août 2009, 13:44

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

par katagoto » 09 août 2009, 11:35

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

par foxdie_cs » 09 août 2009, 09:48

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

par Victor BRITO » 08 août 2009, 21:00

ç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

par fab » 08 août 2009, 20:29

possible essaye :
<?php
declare(encoding='UTF-8');
namespace MonProjet;
?>

Re: Les espaces noms : le retour

par katagoto » 08 août 2009, 20:21

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

par fab » 08 août 2009, 19:55

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

par katagoto » 08 août 2009, 19:37

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

par fab » 08 août 2009, 17:34

Essaye de mettre la déclaration du namespace avant le commentaire

Re: Les espaces noms : le retour

par zeus » 08 août 2009, 15:26

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

par Superpilou » 08 août 2009, 15:09

J'ai déja entendu parler des namespace mais à quoi ca sert exactement?

Les espaces noms : le retour

par katagoto » 08 août 2009, 13:53

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