Php 5.4

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
28
Roma
alessandro1997.netsons.org
Volevo solo informarvi che ieri (avrei dovuto controllare prima!) è stato rilasciato PHP 5.4, che porta davvero moltissime novità. La più importante è probabilmente l'introduzione dei trait, che un utente sul sito di PHP ha definito "language-assisted copy and paste": permettono di risolvere il problema dell'ereditarietà multipla (so già che mi ci vorranno settimane per imparare ad usarli).

Qui tutte le nuove funzioni: http://it.php.net/manual/en/migration54.new-features.php.
 
Ultima modifica:
ciao
se invece di dormire guardavi....
comunque speriamo bene, che non mi tocchi rifare tutto quello che in anni ho fatto
alcune cose non l'ho capite (e penso non le capirò)
quello che mi piace è lo short array
poi (ma forse non ho capito) si ritorna al deprecato <? ?

il tutto senza contare che quei ca...ni scrivono in russo, cinese, burundiano di sotto... meno che in italiano
 
La differenza è che ora la sintassi <?=$variabile?> funzionerà indipendentemente dal valore della direttiva.

Tanto per curiosità ho scaricato e compilato i sorgenti su Ubuntu 12.04 in macchina virtuale, e preparato questo script:
PHP:
<?php

class Foo
{
    // nuova sintassi per gli array
    protected $var = [1, 2, 3, 4];

    public function show()
    {
        $foo = function() {
            // ora si può usare $this nelle closure
            var_dump($this->var);
        };

        $foo();
    }
}

// prima bisognava istanziare a parte
(new Foo())->show();
Davvero spettacolare.

È anche supportata questa sintassi:
PHP:
<?php

function getArray()
{
    return array('foo', 'bar');
}

echo getArray()[0];
 
Ultima modifica di un moderatore:
ciao alex
sulla prima può darsi che tu abbia ragione (a me le classi non entrano in testa), ma per la seconda la seconda (avevo fatto anche un commento sul blog) non ne capisco l'utilità se non quella di scrivere righe in più (ma forse non ho ancora raggiunto l'empireo)
 
Beh, non c'è una vera e propria "utilità", si tratta semplicemente di una sintassi più breve ed immediata.

Anche per le closure prima si poteva fare:
PHP:
$object = $this;
$foo = function() use($object) {
    var_dump($object->var);
};
 
ciao
semplicemente di una sintassi più breve ed immediata
non sari molto d'accordo

$a=['foo','bar'];
echo $a[0];
29 caratteri

function getArray()
{
return array('foo', 'bar');
}
echo getArray()[0];
71 caratteri - più del doppio

dimenticavo, se scrivi per semplificare
function g ()
{
return array('f', 'b');
}
echo g ()[0];
i caratteri diventano 54 sempre di più
 
Ultima modifica:
Diventa comodo se devi richiamare lo stesso array in piu pagine,
invece di riscriverlo in ogni pagina richiami la pagina che contiene la funzione e la funzione.

PHP:
require_once ('funzioni_utili.php');
echo getArray()[0];

E se un giorno devi aggiungere un elemento all'array lo fai una volta nella funzione
 
borgo, credo che tu non abbia capito. La nuova sintassi non serve per semplificare la chiamata all'elemento di un array, ma per semplificare la chiamata all'elemento di un array restituito da una funzione:
PHP:
<?php

// ...

$dato = mysql_fetch_assoc($query)['dato'];
Quando prima era:
PHP:
<?php

// ...

$riga = mysql_fetch_assoc($query);
$dato = $riga['dato'];
 
ciao
@alex
a quello non avevo pensato, può essere utile, ma, mi sembra, in questo caso di utilizzo limitato se devi estrarre solo un dato se devi estrarne più di uno forse è meglio il vecchio metodo

@ciric
PHP:
require_once ('array_utili.php'); 
echo $pinco[0];
 

Discussioni simili