Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    scope globale: come lo facciamo?

    Devo creare un array (contenente la traduzione delle stringhe del mio portale) che sia disponibile ovunque nel portale.

    Questo array dovrà
    - essere utilizzato nelle stringhe
    - essere richiamabile il più facilmente possibile (quindi magari è preferito il nome di una variabile, anzichè nomeArray[chiave] o nomeFunzione("chiave", idLingua))


    Vi chiedo:
    qual'è la struttura migliore per avere una lista di valori disponibile in qualunque sezione di codice del sito?

    Avevo pensato:

    1)
    codice:
    global nomeArray
    (però va scomodamente definito in ogni funzione dove voglio utilizzarla, e leggo che sarà deprecato)

    2)
    codice:
    $_GLOBALS[nomeArray]
    (ma poi è palloso richiamarlo ogni volta con
    codice:
    $_GLOBALS[nomeArray]["chiave della frase da tradurre...etc..etc..."]
    )

    3)
    codice:
    $sql = "SELECT key, value FROM translations WHERE idLingua = $lang";
    while($res = mysql_fetch_array($sql, $con))
    {
    if( ! defined( "lang_$row[key] ") )
    	define( "lang_$row[key] ", $row['value'] );
    }
    4) Altro....


    Insomma, oltre a questo, ho diverse variabili (come la connessione o certe configurazioni) che devo rendere disponibili e richiamabili ovunque.

    Come è più adeguato (e comodo) renderle disponibili?

  2. #2

  3. #3
    Semplicemente crei un file contenente tute le variabili che ti servono e lo includi in tutte le pagine
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  4. #4
    Non mi piace molto.

    Poi i valori e le chiavi sono su una tabella, come puoi notare dalla query.

    Seleziono tutte le chiavi e i rispettivi valori nella lingua scelta e poi vorrei buttare tutto in una 'struttura' adatta a gestirmi meglio le stringhe della localizzazione.

    www.php/browse_frm/thread/08f8cea0144259bb?hl=it#]Qua c'è un thread[/URL] sul newsgroup di PHP dove chiedo più o meno la stessa cosa.

    Voi cosa ne pensate?

    Qual'è il modo più corretto (stilisticamente parlando) e versatile (per espansioni, correzioni, leggerezza, utilizzo)?

  5. #5
    Una sessione?
    PHP LEARN - Guide, tutorial e articoli sempre aggiornati
    NUOVO: standardLib; il potente framework PHP é ora disponibile
    *******************************************
    Scarica oggi la tua copia di MtxEventManager

  6. #6
    Un file xml con le labels una classe per gestirlo/parsarlo
    (usa le simpleXml hanno l'accesso ai nodi + diretto)
    e una classe registry per renderlo disponile in tutto
    lo script.

    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  7. #7
    Originariamente inviato da mtx_maurizio
    Una sessione?
    Brutto
    Le sessioni sono state ideate per scambiare dati tra pagine, non tanto per la stessa pagina. Poi non credo sia consigliato l'utilizzo per questo tipo di dati...

    Volevo qualcosa più tipo un array.... avevo pensato a delle costanti con prefisso "lang_", tipo la costante "lang_welcome" che riempio con "Benvenuto!", "lang_contacts" che riempio con "contatti".
    Le creo dinamicamente dal database.

    Originariamente inviato da whisher
    Un file xml con le labels una classe per gestirlo/parsarlo
    (usa le simpleXml hanno l'accesso ai nodi + diretto)
    e una classe registry per renderlo disponile in tutto
    lo script.

    Ma le traduzioni le ho nel DB. Non vorrei appoggiarmi al filesystem...
    E cosa permette una classe 'registry'?

    Comunque...
    Stavo cercando piuttosto di capire tutti i vantaggi e svantaggi di ogni approccio.

    1) Ad inizializzazione della pagina, creare dinamicamente una costante 'lng_stringa' per ogni stinga, leggendo dal database.
    PRO:
    - Le costanti sono visibili dovunque, senza aggiungere niente.
    CONTRO:
    - Memorizzano solo stringhe e numeri
    - Non si possono usare direttamente all'interno delle virgolette (come accade per le variaibli: "$lang_hello $nomeutente")
    - Se voglio applicare un'elaborazione/funzione a tutte le stringhe devo farlo ogni volta

    2) Utilizzo le sessioni.
    PRO:
    - Disponibili ovunque
    CONTRO:
    - (se non sbaglio) si basano sui cookies. Se sono disabilitati non si possono usare.
    - Appesantiscono il codice
    - Sono state pensate per altri tipi di casistica

    3) Creo un array con chiave e valore (x esempio: "hello"=>"ciao"). L'array lo dichiaro statico, così è disponibile ovunque
    PRO:
    - Se uso "static" posso leggerne i valori dovunque
    CONTRO:
    - meno immediata l'inclusione del codice rispetto al semplice nome di una costante

    4) Classe registry o singleton (che devo ancora capire cosa sono precisamente ) per rendere disponibili delle configurazioni ovunque nel portale
    PRO:
    - Disponibilità ovunque
    - Versatililità del codice per future modifiche
    - OOP... quindi più PHP5
    - Riutilizzo del codice in futuro, se strutturato in classi
    CONTRO:
    - Più codice
    - Ho poca confidenza con la OOP e i pattern
    - meno immediata l'inclusione del codice; magari per scrivere "ciao" devo fare "$language.getTranslation('hello', 'it')"....
    - Utilizzando un metodo posso elaborare le stringhe preventivamente (per esempio per fare l'esaping dei caratteri pericolosi)

    5) Funzione statica che ricava il valore della chiave passata
    PRO:
    - Disponibile ovunque
    CONTRO:
    - Se non la faccio singleton mi fa una query al DB per ogni singola stringa che voglio tradurre
    - Più codice
    - Appesantimento dell'elaborazione
    - Meno immediata l'inclusione nel codice rispetto al semplice nome di una costante
    - Posso fare elaborazioni sulle stringhe (tipo l'escape degli apici), 'in massa' senza applicarle ogni volta


    .... questi come metodi basati sulle traduzioni presenti nel DB nella tabella "translations" (ogni record è identificato da "chiave" + "id_lingua").

    Che ne dite?

    Qual'è il più versatile e comodo da utilizzare secondo voi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.