IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Class pour gérer un site multilangue


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Points : 39
    Points
    39
    Par défaut Class pour gérer un site multilangue
    Bonjour,

    Je me lance dans la POO et j'ai quelques questions. Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    class Lang
    {
    	public $lang;
    	public $currentLang;
    	public $authorizedLang = array("fr", "en");
    	public $defaultLang = "en";
    	public $uriLang = substr($_SERVER["REQUEST_URI"], 1, 2);
    	public $browserLang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
     
    	function __construct()
    	{
    		if(isset($_SESSION['lang']))
    		{
    			$this->currentLang = $_SESSION['lang'];
    		}
    		elseif(in_array($this->browserLang,$this->authorizedLang))
    		{
    			$this->currentLang = $this->browserLang;
    		}
    		elseif(in_array($this->uriLang,$this->authorizedLang))
    		{
    			$this->currentLang = $this->uriLang;
    		}
     
    		$this->detectLang();
    	}
     
    	function detectLang()
    	{
    		/*
    		 * 1. if the uri lang is not the same as the current one and is authorized
    		 * 2. if the lang is stored in the session
    		 * 3. if the browser language is authorized
    		 * 4. else we take the defaul language
    		 * 5. we store the lang into the session
    		*/
     
    		if($this->uriLang != $this->currentLang && in_array($this->uriLang, $this->authorizedLang))
    		{
    			$this->lang = $this->uriLang;
    		}
    		elseif(in_array($this->currentLang,$this->authorizedLang))
    		{
    			$this->lang = $_SESSION['lang'];
    		}
    		elseif(in_array($this->browserLang,$this->authorizedLang))
    		{
    			$this->lang = $this->browserLang;
    		}
    		else
    		{
    			$this->lang = $this->defaultLang;
    		}
     
    		$_SESSION['lang'] = $this->currentLang;
    		//require_once("./data/lang/".$this->lang.".php");
    	}
    }
    ?>
    Tout d'abord j'ai l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: syntax error, unexpected '(', expecting ',' or ';' in /Users/me/Site/includes/lang.class.php on line 8
    L'erreur provient de l'utilisation de $_SERVER mais je ne comprends pas pourquoi car c'est une variable superglobal qui devrait être accessible dans le scope de ma class non ? Quand j'utilise $_SERVER j'obtiens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    public $uriLang = $_SERVER["REQUEST_URI"];
    Parse error: syntax error, unexpected T_VARIABLE in /Users/me/Site/includes/lang.class.php on line 8
    La deuxième question est plus générale, étant donné que ce sont mes premières lignes, est-ce que c'est bon ? Est-ce que je pourrais faire mieux, devrais-je utiliser du static par exemple ? Bref tout ce qui pourrait me faire m'améliorer.


    Merci d'avance pour votre aide.

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    625
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 625
    Points : 822
    Points
    822
    Par défaut
    Les attributs de classes ne peuvent être initialisés qu'avec des valeurs constantes.
    Si tu veux initialiser avec des fonctions ou variables, tu dois le faire au niveau de ton constructeur.

    Lis bien ceci : http://www.php.net/manual/fr/keyword.class.php

    Même si c'est estampillé PHP4, c'est également valide en PHP5.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 52
    Points : 39
    Points
    39
    Par défaut
    Merci pour l'explication, ca tourne parfaitement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Organiser une classe pour gérer les images d'un site
    Par Renand dans le forum Performance Web
    Réponses: 5
    Dernier message: 02/09/2011, 12h38
  2. Réponses: 2
    Dernier message: 04/05/2007, 15h10
  3. Utilisation de classes pour gérer une table
    Par mathias dans le forum Access
    Réponses: 11
    Dernier message: 30/08/2006, 17h57
  4. Réponses: 1
    Dernier message: 20/08/2006, 14h36
  5. [DOM XML] Classe pour gérer du xml
    Par __fabrice dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 29/05/2006, 15h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo