HEREDOC

ciao,

mi piace usare questo sistema

<?php
echo <<< END_HEREDOC
{$row["pd_name"]}
END_HEREDOC;
?>

anzichè

<?php
echo ".$row["pd_name"]." 
?>

però ho notato che se inserisco ad esempio:

<?php
echo <<< END_HEREDOC
{strtoupper($row["pd_name"])}
END_HEREDOC;
?>

già non funziona più.

è possibile comunque fare in modo che php possa parsare il sistema HEREDOC con all'interno le funzioni come sopra?

perchè per me sarebbe più comodo e pulito (o sarebbe meglio dire chiaro? ) il codice formattato in quel modo.

ovviamente che mi sto riferendo a situazioni in cui c'è parecchio php da immergere nell' html, tipo estrazione dei dati dal DB in una tabella html.

dènkiu

 :)

inviato 10 anni fa
iTek
iTek
1
X 0 X

Per sicurezza mi sono riletto il manuale di PHP, ma come pensavo non puoi mettere funzioni all'interno di una stringa.

La sintassi heredoc è comunque una stringa e non ci puoi mettere funzioni dentro; un esempio per capire meglio (spero! ):

$stringa = "Che bel sole!";

è uguale a:

$stringa = <<<END_STRING
Che bel sole!
END_STRING;

Questo non è fattibile:

$stringa = "Che bel strtoupper(sole)!";

Devi per forza chiudere e riaprire la stringa, idem con la sintassi HEREDOC.

Edit:

Comunque la sintassi heredoc secondo me è meglio usarla quando c'è una parte di testo da scrivere, magari su più righe o particolarmente complessa tra " e ' per comodità e pulizia; con le "variabili" non aggiungi nulla.

risposto 10 anni fa
LonelyWolf
modificato 10 anni fa
X 0 X

Ho guardato un po' in giro: è certo che di funzioni a quel modo non ne puoi mettere ma se ti può interessare i metodi e le proprietà di una classe (dentro parentesi graffe) sì!

Ti ho preparato un esempio:

class persona  {
  var $nome;
  var $sport;

  function persona ($nome, $sport)  {
    $this->nome = $nome;
    $this->sport = $sport;
  }
  
  function stampa()  {
    return "Lo sport preferito da $this->nome è il ".strtoupper ($this->sport);
  }
}



$psn = new persona("usecram", "ciclismo");

echo <<<END
{$psn->stampa()}
END;

...e saprai il mio sport preferito.  :bye:

risposto 10 anni fa
usecram
X 0 X

Certo, ma una funzione non è un metodo di una classe sta lì la differenza, in un certo senso una classe è anche una variabile ( diciamo variabile complessa? )e

$persona = "LonelyWolf";
$stringa = Lo sport preferito da $persona è il nuoto";

si può fare.

http://it.php.net/manual/en/language.types.string.php

Quindi o ti fai una classe solo per fare  strtoupper (ed altre eventuali) o lasci perdere.

P.S.

Il link l'ho messo perchè è sempre utile rileggere il manuale, io lo faccio spesso nonostante per molte cose non sarebbe necessario.

risposto 10 anni fa
LonelyWolf
X 0 X
Quindi o ti fai una classe solo per fare  strtoupper (ed altre eventuali) o lasci perdere.

meglio lasciare perdere...non è il caso! :D

risposto 10 anni fa
iTek
iTek
1
X 0 X
Certo, ma una funzione non è un metodo di una classe sta lì la differenza, in un certo senso una classe è anche una variabile ( diciamo variabile complessa? )...

Come darti torto, infatti riportavo solo una curiosità, io almeno non lo sapevo  :bye:

risposto 10 anni fa
usecram
X 0 X

Potresti prima fare tutte le operazioni sui dati e poi preparare la stringa:

<?php
$pd_name = strtoupper($row["pd_name"]);

echo <<< END_HEREDOC
$pd_name
END_HEREDOC;
?>
risposto 10 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda