Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Sintassi ${ ??

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    2

    Sintassi ${ ??

    Ciao,
    devo mettere mani ad un progetto che abbiamo ereditato, in cui ricorre la seguente sintassi:

    $myvar = ${"chiave"};

    Il nostro web server (WINDOWS con XAMPP) non è in grado di interpretarla.

    Facendo delle prova ho notato che, in taluni casi, è sicuramente un altro modo per esprimere:

    $myvar = $_POST["chiave"];

    Posso essere sicuro che tutte le volte che trovo quella sintassi posso sostituire con $_POST?
    Oppure essa può fare riferimento ad altri array di PHP?
    E' un impostazione globale di php? Se si, quale e come funzionna? Comunque non vorrei cambiare nessuna impostazione globale di php, visto che i nostri siti su quel server non utilizzano mai quel tipo di sintassi e non vorrei produrre danni ad altri siti per far funzionare questo.

    Please, help me.
    Grazie e ciao,
    Andrea

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027

    Re: Sintassi ${ ??

    Originariamente inviato da andyk72
    Ciao,
    devo mettere mani ad un progetto che abbiamo ereditato, in cui ricorre la seguente sintassi:

    $myvar = ${"chiave"};

    Il nostro web server (WINDOWS con XAMPP) non è in grado di interpretarla.

    Facendo delle prova ho notato che, in taluni casi, è sicuramente un altro modo per esprimere:

    $myvar = $_POST["chiave"];

    Posso essere sicuro che tutte le volte che trovo quella sintassi posso sostituire con $_POST?
    Oppure essa può fare riferimento ad altri array di PHP?
    E' un impostazione globale di php? Se si, quale e come funzionna? Comunque non vorrei cambiare nessuna impostazione globale di php, visto che i nostri siti su quel server non utilizzano mai quel tipo di sintassi e non vorrei produrre danni ad altri siti per far funzionare questo.

    Please, help me.
    Grazie e ciao,
    Andrea
    Sinceramente non ho mai visto questo tipo di notazione, ma sono portato a pensare che se è un progetto vecchio, possa far riferimento alla request (quindi post-get-cookie) fai una prova con un get ad esempio, e chi lo sa, magari a tutte le variabili se era settato il register_globals a on...

    mi spiace non esserti di maggiore aiuto..

    ciao

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    2
    ai cookie non credo, visto che si trova anche la $HTTP_COOKIE_VARS nle codice...quindi in teoria solo GET/POST, giusto?
    Grazie e ciao,
    Andrea

  4. #4
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    neanche io ho mai visto una sintassi del genere, però generalmente le graffe si usano per inserire variabili all' interno di stringhe dove però , senza queste, potrebbero assumere significati diversi.

    ecco il risultato del mio test, con esito posito su ciò che avevo intuito

    Codice PHP:
    define('TEST','marco');

    $marco="amico";

    echo ${
    TEST};

    // stampa amico 
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  5. #5
    Originariamente inviato da dottwatson
    neanche io ho mai visto una sintassi del genere, però generalmente le graffe si usano per inserire variabili all' interno di stringhe dove però , senza queste, potrebbero assumere significati diversi.

    ecco il risultato del mio test, con esito posito su ciò che avevo intuito

    Codice PHP:
    define('TEST','marco');

    $marco="amico";

    echo ${
    TEST};

    // stampa amico 
    Esatto.
    Di fatto questi due codici sono identici

    Codice PHP:
    $foo 'foo foo foo';
    echo 
    "foo $foo foo";
    echo 
    "foo ${foo} foo"
    La differenza sta nel fatto che il secondo caso è possibile con array ed oggetti, il primo no.

    Codice PHP:
    $foo 'foo foo foo';
    echo 
    "foo $obj->getBar() foo"// no
    echo "foo ${obj->getBar()} foo"
    E' comunque una sintassi molto brutta, a mio avviso.

  6. #6
    E' parte della sintassi del linguaggio PHP, non è ne obsoleta ne inutile. Faccio un esempio:

    Codice PHP:
    $valore1 'uno';
    $valore2 'due';
    $valore3 'tre';

    for (
    $cnt 1$cnt <= 3; ++ $cnt)
        echo ${
    'valore' $cnt}; 
    Come farei altrimenti (ovviamente senza appoggiarmi ad un'altra variabile)?

  7. #7
    Originariamente inviato da ntd
    E' parte della sintassi del linguaggio PHP, non è ne obsoleta ne inutile. Faccio un esempio:

    Codice PHP:
    $valore1 'uno';
    $valore2 'due';
    $valore3 'tre';

    for (
    $cnt 1$cnt <= 3; ++ $cnt)
        echo ${
    'valore' $cnt}; 
    Come farei altrimenti (ovviamente senza appoggiarmi ad un'altra variabile)?
    Si può usare eval() o oppure (in questo caso) gli array... esistono (anche) per questo.

  8. #8
    Originariamente inviato da weppos
    Si può usare eval() o oppure (in questo caso) gli array... esistono (anche) per questo.
    Era un esempio dimostrativo, mica un programma di produzione: pensavo fosse chiaro!

    Codice PHP:
    class Demo {
        var 
    $_id 0;
        var 
    $_tipo '';

        function &
    getPrivateProperty($name) {
            return 
    $this->{'_' $name};
        }

    Va meglio questa?

  9. #9
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    Originariamente inviato da ntd
    Era un esempio dimostrativo, mica un programma di produzione: pensavo fosse chiaro!

    Codice PHP:
    class Demo {
        var 
    $_id 0;
        var 
    $_tipo '';

        function &
    getPrivateProperty($name) {
            return 
    $this->{'_' $name};
        }

    Va meglio questa?
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.