- Home
- Categorie
- Coding e Sistemistica
- PHP
- Uso di funzioni in here document?!
-
@Rammo said:
Il problema è che devo stampare un blocco di codice html, non solo del semplice testo. Dentro il blocco di codice andrebbe richiamata la funzione...
...come potrei fare?Allora scrivi l'html normale e dove vuoi stampare il testo ritornato dalla funzione metti:
<body>blublu<br /><p>blabla <?= nome_funzione(); ?> blibli</p>
-
Il blocco di codice è già dentro una funzione
Nel blocco di codice dentro la funzione dovrei richiamare un'altra funzione e non volevo usare "print" per ogni riga da stampare
print "<td>blablabla</td>";
print "bla bla bla";
...etc.Avevo pensato per quello di includere il blocco di codice nell' here document e poi da quello richiamare l'altra funzione...
-
@Rammo said:
Il blocco di codice è già dentro una funzione
Nel blocco di codice dentro la funzione dovrei richiamare un'altra funzione e non volevo usare "print" per ogni riga da stampare
print "<td>blablabla</td>";
print "bla bla bla";
...etc.Avevo pensato per quello di includere il blocco di codice nell' here document e poi da quello richiamare l'altra funzione...
Allora forse, anzi, sicuramente, non ho capito. Se mi scrivi un po' di più codice, forse posso aiutarti.
-
Questa è la funzione che stampa il primo pezzo di codice della pagina .php:
function head_della_pagina() { print <<<HTMLBLOCK <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <title>Titolo della pagina</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="StyleSheet" media="all" href="stile.css" type="text/css"> </head> <body> <div id="box"> nome_funzione (); <div id="box2"></div> ...etc. etc. HTMLBLOCK; }
Dentro al primo pezzo di codice della pagina .php dovrà essere chiamata un'altra funzione ( nome_funzione () ) che chiaramente così non funziona, in quanto stampa direttamente la parola nome_funzione ();
Speravo ci fosse una sintassi particolare per richiamare le funzioni all'interno di here document invece mi prospetti che non è così ahimèCome potrei fare per richiamare questa funzione?
Avevo pensato di spezzare l'here document in 2 e lasciare la chiamata alla funzione fuori, in modo che possa funzionare.
function head_della_pagina() { print <<<HTMLBLOCK <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <title>Titolo della pagina</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="StyleSheet" media="all" href="stile.css" type="text/css"> </head> <body> <div id="box"> HTMLBLOCK; nome_funzione (); print <<<HTMLBLOCK2 <div id="box2"></div> ...etc. etc. HTMLBLOCK2; }
Così funziona, ma mi scocciava interrompere l'here document ogni volta per richiamare una funzione... non c'è altro modo?
Ciao e grazie per ora,
Rammo.
-
@Rammo said:
Questa è la funzione che stampa il primo pezzo di codice della pagina .php:
> function head_della_pagina() { print <<<HTMLBLOCK <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <head> <title>Titolo della pagina</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link rel="StyleSheet" media="all" href="stile.css" type="text/css"> </head> <body> <div id="box"> nome_funzione (); <div id="box2"></div> ...etc. etc. HTMLBLOCK; } >```Dentro al primo pezzo di codice della pagina .php dovrà essere chiamata un'altra funzione ( nome_funzione () ) che chiaramente così non funziona, in quanto stampa direttamente la parola nome_funzione (); Speravo ci fosse una sintassi particolare per richiamare le funzioni all'interno di here document invece mi prospetti che non è così :( ahimè Come potrei fare per richiamare questa funzione? Avevo pensato di spezzare l'here document in 2 e lasciare la chiamata alla funzione fuori, in modo che possa funzionare.
function head_della_pagina() {
print <<<HTMLBLOCK
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<title>Titolo della pagina</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="StyleSheet" media="all" href="stile.css" type="text/css">
</head>
<body>
<div id="box">
HTMLBLOCK;nome_funzione ();
print <<<HTMLBLOCK2
<div id="box2"></div>
...etc. etc.HTMLBLOCK2;
}
Ciao e grazie per ora,
Rammo.Se non vuoi usare altri metodi (io ti sconsiglio quella soluzione), non ci sono altri metodi. L'unica è interrompere il blocco, chiamare la funzione e riaprirlo come hai fatto tu.
-
Scusami, quale soluzione mi sconsiglieresti?
-
@Rammo said:
Scusami, quale soluzione mi sconsiglieresti?
Chiudi il tag php "?>", scrivi l'html puro e riapri il tag "<?php" solo quando necessario. Meglio evitare di mescolare codice php e html con funzioni come echo e print.
Magari dai un'occhiata a Smarty, che in questi casi è utilissimo. Separi il codice senza nessun problema dall'html.
-
Smarty? Non ne ho mai sentito parlare..
..è un programma che separa il codice php dall'html? Lo provo subito!E se associassi la funzione ad una variabile che poi richiamo nell'here document?
-
@Rammo said:
Smarty? Non ne ho mai sentito parlare..
..è un programma che separa il codice php dall'html? Lo provo subito!E se associassi la funzione ad una variabile che poi richiamo nell'here document?
here domcument non parsa in nessun modo nè variabili nè funzioni. Devi comunque chiudere coi delimitatori e riaprire per eseguire script php.
Smarty è una bomba se lo si impara ad usare da subito e bene. Serve proprio nelle aziende a far collaborare grafici e programmatori senza che nessuno dei due sappia cosa fa l'altro (o quasi).
-
here domcument non parsa in nessun modo nè variabili nè funzioni. Devi comunque chiudere coi delimitatori e riaprire per eseguire script php.
Sbagliato
Le variabili si possono usare tranquillamenteSmarty è una bomba se lo si impara ad usare da subito e bene. Serve proprio nelle aziende a far collaborare grafici e programmatori senza che nessuno dei due sappia cosa fa l'altro (o quasi).
Bello, lo provo subito!