Newsgroup: it.comp.www.php
Titolo: Scusate, ha senso questo stile di programmazione?

Posto che mi trovo molto meglio con lo stile "massimale" ovvero con pochi
tag di apertura e chiusura (o ancora meglio con un solo tag di apertura a
inizio file e un tag di chiusura a fine file) sono rimasto infastidito da un
output html disorganizzato e molto compatto generato dalle numerose print
prive di caratteri di indentazione, dalle continue verifiche sulla
documentazione html a riguardo degli attributi disponibili per i vari tag e
il loro nome esatto (height oppure heigth, numcol oppure numcols e simili) e
dal mischiarsi delle virgolette singole e doppie necessarie dalle stringhe
php e dai parametri html.
Ho pensato così di farmi un insieme di funzioni che effettuano una print del
relativo tag html, indentato seguendo certe regole di decenza e con gli
attributi che gli sono stati passati. Questo mio insieme è ben lontano
dall'esere completo ma copre tutti i tag e gli attributi che usualmente
utilizzo.
Il codice che ne viene fuori è una cosa di questo tipo:
htmlw_begin_output();
htmlw_set_header('mio titolo');
htmlw_begin_body('Tahoma','#FFEEAA','#112233',NULL,NULL,'sfondo.jpg');
htmlw_begin_table('right','100%','0','1');
ecc ecc
htmlw_end_table();
htmlw_end_body();
htmlw_end_output();
secondo voi il codice che ne viene fuori è conforme alle regole di decenza
EEE(c) (efficacia efficienza eleganza)?
Più che altro il dubbio è sull'eleganza, efficace è efficace perchè funziona
bene quanto nell'altro modo, efficiente non molto perchè richiamo molte
funzioni e perdo un po' di tempo ma imho si può trascurare in quanto non è
un parametro critico nei progetti su cui lavoro e non perdo molto in termini
di tempo (dovrei fare dei test).
Considerate che io faccio uso di un IDE che mi informa sul nome e numero dei
parametri di una funzione, quindi quando apro la parentesi so subito che il
primo parametro significa questo, il secondo quell'altro e ho l'impressione
di risparmiare una quantità abominevole di tempo, in quanto avendo lavorato
molto poco con l'html ho difficoltà a ricordre i vari attributi dei vari
tag, mentre in questo modo basta che mi ricordo le funzioni e il resto vien
da sè.
Un'altra cosa, le funzioni di cui sopra me le sono fatte da solo però come
già detto sono lungi dall'essere complete e comprendono solo le parti
dell'html di mio interesse (ad esempio mancano di tutto il supporto al
dhtml, ai fogli di stile e allo scripting lato client). Conoscete librerie
di questo tipo "serie e professionali" già pronte?

 Gabriele Palma wrote:
<cut>
Credo che usando i CSS abbinati ai tag ID e DIV si possano ottenere 
risultati ancora migliori.
Max
-- 
Se mi volete scrivere
massimo . ori @ aliceposta . it

 risultati ancora migliori.
Nel progetto corrente mi hanno proibito categoricamente l'uso dei CSS per
problemi di compatibilità.
In effetti se non sbaglio i CSS sono perlopiù compatibili solo con IE e
quindi specializzerei il sito per una visualizzazione solo con IE, cosa che
in linea di massima vorrei evitare sempre, e non solo per questo progetto

 problemi di compatibilità.
Aaarghhh!!! chi sono questi assassini del web che te lo hanno proibito??
ste

 di questo tipo "serie e professionali" già pronte?
Dato che mi sono arrangiato, no purtroppo.
Ti auguro buon lavoro
LB

 wrote in message
C21xc.26422$G%.6846@tornado.fastwebnet.it...

Persone che utilizzano quasi esclusivamente Konqueror, che non ha un
supporto completo ai CSS (solo parziale).

 con poche modifiche potrai trasformare tutto in vista del php5.
Quindi secondo te l'approccio č buono ma mi conviene articolare il sistema
in modo piů regolamentato ed organizzato.
Le classi php non le ho ancora guardate, conosco ed utilizzo la oop nel c++
ma certa gente mi aveva sconsigliato un approccio oop per il php.
Magari ci dň un occhiata, le tue idee mi sembrano molto buone e secondo me
la strada da percorrere č proprio quella.

 ha scritto nel messaggio
news:lC1xc.295383$hc5.12...@news3.tin.it...

caccia konqueror hai _palla di pelo_ (mozzilla firefox) in tutte le salse
comunque 4000 righe di codice sono troppe hai delle cose rindondanti
poi il css se non ti fa i css2 almeno di norma avra il suppporto all'1
(basta definire gli stili di presentazione non il posizionamento)
apri questo sito 
http://www.irixbox.com/
 con konqueror
se si vede (appare una finestra stile sgi) non funziona con ie
il sito e' quasi corretto (manca la chiusura di un tag)
se lo vedi usa i css 2, (e' fatto apposta per NON funzionare con ie)
function pippo ($code){
$cod ="<div class=>";
$cod .=$code;
$cod .= "<div>";
return $cod;
}
IMHO e' insensato
meglio
<div class...>
<?=$code;?>
</div>
oppure
<div class...>
include("file");
</div>

 </div>
Usa "<?php" non "<?" che è obsoleto.
A me non piace mischiare php con l'html, mi confondo e rendo di meno, volevo
giusto sapere se sono in tanti ad usare uno stile massimale come il mio
oppure se usate tutti uno stile minimale con il php inserito "a sprazzi"
(per ora siete uno a uno).
In ogni caso il div è un tag che non uso, se lo usassi il mio codice
diventerebbe qualcosa del tipo:
<?php
    begin_div('mio_id','mia_class');
    print('contenuti');
    end_div();
?>
Ma potrei considerare la possibilità di farne una classe.
L'ereditarietà c'è nel php?
oppure come facevo prima di introdurre le funzioni
<?php
    print('<div class...>');
    print('contenuti');
    print ('</div>');
?>
ma questo mi piace sempre meno.

 L'ereditarietà c'è nel php?
Fortunatamente almeno quella sì (nel php5 ci saranno anche interfacce,
classi astratte, metodi e campi protetti o privati...). Per esempio:
class Pluto {
    var a;
    function f1($b) {
        $this->a = $b;
        echo 'a=' . $this->a;            // input:2        output: a=2
    }
}
class Pippo extends Pluto {
    var c;
    function f1($d) {
        $this->c = $d;
        echo 'c=' . $this->c;            // input:3        output: c=3
    }
    function f2($e) {
        parent::f1($e);                    // input:4        output: a=4
    }
}
LB

 classi astratte, metodi e campi protetti o privati...).
Caspita, avremo un supporto alle classi paragonabile a quello del Dot.Net
Per ora accontentiamoci dunque e aspettiamo speranzosi.

 con poche modifiche potrai trasformare tutto in vista del php5.
per oggetti cosa si intende? puoi fare un esempio di oggetto table e form?
inoltre "..con poche modifiche", cosa vuol dire, che gli oggetti fatti 
con php4 possono diventare oggetti di php5?
puoi fare un esempio di tale passaggio .
grazie

 EEE(c) (efficacia efficienza eleganza)?
Secondo me faresti meglio ad adottare un motore di template, io per 
esempio uso XTemplate e mi trovo benissimo. Questo serve per separare 
*completamente* il codice html dal codice php e il risultato e' circa:
-- file.htm --
<html>
<body>
<div> {var1} </div>
<table width="{width}">
  <tr>
   <td>{var2}</td>
   <td>{var3}</td>
  </tr>
</table>
</body>
</html>
-- file.php --
$tpl = new XTemplate(file.htm);
$tpl->assign ('var1','Titolo della pagina');
$tpl->assign ('var2','Cella 1');
$tpl->assign ('var3','Cella 2');
$tpl->assign ('width','90%');
$tpl->out();
Quando fai $tpl->out() il php invia al browser il file.htm sostituendo 
ai vari segnaposto i valori assegnati con $tpl->assign() ...
Come vedi e' molto piu' facile da gestire che non ricordarti una 
funzione per ogni tag html, gli html li puoi generare con l'editor che 
preferisci. Questo esempio e' molto semplificato ma puoi fare ben di 
piu', (blocchi, inclusione di file ecc ecc) se ti interessa ne parliamo 
oppure meglio cerchi su google template php.
ciao
Mauro

 oppure meglio cerchi su google template php.
Se non ti dispiace, a me questa cosa interessa molto :)
Sono nuovo di qui' ho lurkato un po' per capire se e' il NG giusto dove fare
domande, non vorrei essere da subito OT.
Sono un sistemista linux e uso il php da un po' ma ci faccio cose abbastanza
banali.
Ora mi e' capitato un bel lavoro tra le mani, devo creare un sito per un mio
cliente per permettere ai suoi clienti di fare preventivi online col
software di contabilita' che vendiamo che ha come Base Dati... Informix
Per l'aggancio al database Informix non ho problemi, il php se compilato con
una specifica drettiva ha tutte le funzioni per lavorarci, inoltre la base
dati la conosco perche' il software di contabilita' e' nostro, e qualche
cosina l'ho gia' realizzata, cose banali pero'
Il mio problema e' che le pagine che devo costruire ora sono complesse come
potete immaginare, e non vorrei partire col piede sbagliato, mettendo in
piedi un lavoro mal realizzato e di difficile manutenzione. Ora, essendo un
autodidatta abbastanza fuori tra l'altro dal mondo dello sviluppo web, ho
grosse probabilita' di fare delle fesserie, di lavorare male, e peggio
ancora di percorrere strade che mi fanno impiegare il triplo del tempo per
fare cose che magari si possono risolvere con meno fatica.
Ora, il tuo discorso sui template mi interessa e mi piacerebbe se mi potessi
(l'invito e' esteso anche agli altri) dare qualche "dritta"  su come
intraprendere questo cammino col piede giusto.
Attualmente faccio una cosa del genere:
Disegno le pagine con un editor visuale, e metto dei "Segnaposto" dove dovra
esserci invece il codice php.
Poi degli script con una buona dose di sed egrep e awk prendono i blocchi di
codice da un file che mi creo io e li sostituiscono nei segnaposto.
Mi rendo conto che per un lavoro complesso cio' e' assurdo!
Grazie a tutti.
p.s.
Scusate la lunghezza del post, ma mi dovevo pur presentare ^__^
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.700 / Virus Database: 457 - Release Date: 06/06/2004

 oppure meglio cerchi su google template php.
Sono d'accordo che i template siano più facili da gestire, specialmente nel
caso in cui chi disegna l'interfaccia è più web designer che programmatore.
Però sono più limitati perchè si basano su una struttura di ouput statica
(benchè i contenuti siano dinamici): in quella "famosa" libreria di 4000
righe di cui parlavo nella mie risposte precedenti ho tra i vari oggetti ad
esempio una classe Table che crea una lista di record visualizzandoli a
blocchi, gestendo internamente lo scorrimento tra i blocchi e l'ordinamento
in base al campo (richiedendo solo la lista dei nomi dei campi, le eventuali
condizioni, e pochi altri parametri). Se nella stessa pagina devo
visualizzare alcuni o tutti i campi in base a delle condizioni (tipo il
livello utente) con un template non posso farlo (oppure devo appoggiarmi a
Javascript) mentre con la mia classe mi basta cambiare l'array di campi da
darle in pasto e le condizioni. Non so se sono stato sufficentemente chiaro,
mi piacerebbe poterti dare un esempio ma il sito che al momento è in linea
contiene dati sensibili del cliente (ovviamente è dotato di una procedura
d'accesso). Magari un giorno l'utilizzero sullo spazio web che ho a
disposizione e che per ora è vuoto ^_^
Tutto questo discorso per dire i template non ti bastano sempre.
LB


Scusa se mi intrometto nuovamente, ma se non l'avessi capito sono molto
interessato a questo discorso, dato che, pur conoscendo benino il php (piu'
che altro per la sua somiglianza col c e il perl) non sono molto pratico
nella costruzione di siti web complessi.
Quindi tu pensi cher i template non siano la strada giusta? Non ho capito
bene perche' in fondo se ho capito come funzionano i template dovrei poter
inserire qualunque tipo di codice php, anche complesso volendo, all'interno
delle mie pagine, quindi quale sarebbe la limitazione?
Non vorrei seccare con queste domande, ma e' proprio delle impressioni e
delle valutazioni di chi e' nel settore che mi voglio appropiare, devo
iniziare un lavoro, e lo voglio fare nel modo piu' elegante ed efficiente
possibile, vorrei inoltre che il lavoro svolto possa essere un
"investimento" nel senso che potra' essere facilmente gestibile ed
integrabile per questioni future. Io ho gia' delle mie idee, ma sono idee
che ho costruito solo sulla base di mie elucubrazioni mentali :-)
Sicuramente quelle che vengono dalla esperienza di chi e' nel settore
saranno per me piu' fruttuose.
Grazie.

 saranno per me piu' fruttuose.
Questo è solo la mia opinione, ovviamente.
Se in una pagina ciò che è dinamico sono più i dati rispetto alla struttura
(considera l'esempio di un forum), allora i template sono un'ottima strada,
veloce e utilizzabile facilmente anche da chi non è molto esperto: inoltre
il passaggio da un prototipo html-statico al template è abbastanza veloce.
Se invece è la struttura della pagina ad essere dinamica, oltre ai dati
(pensa a phpMyAdmin e phpcollab), allora è più conveniente creare delle
funzioni o (meglio) delle classi che gestiscano la parte dinamica della
struttura (magari inglobando le parti quasi-statiche o puramente html in
file da includere): tempo fa ho studiato un po' il codice di phpcollab e ho
notato che per molte strutture utilizza degli oggetti che vengono creati e
modificati in base ai contenuti della pagina.
Presumo che anche phpMyAdmin lavori in maniera simile: per esempio il codice
che permette di editare i campi di un record deve essere creato in base al
record stesso, secondo alcune regole. Ciò non sarebbe possibile con un
template, a meno utilizzare un "tag" che dica "qui va la tabella di modifica
record del record a della tabella b", ma in tal caso resterebbe ben poco
altro da scrivere nel template.
Spero di essere stato sufficentemente comprensibile. Altrimenti chiedi
liberamente.
Saluti
LB

 liberamente.
Sei stato chiarissimo. Quindi anche la scelta tra programmazione Object
Oriented spinta o semplice utilizzo dei template deve rientrare nella fase
di analisi del progetto, in effetti, a volte si potrebbe aver bisogno di
flessibilita' e a volte di facilita' di realizzazione, cose che la mia
esperienza mi dice cho non vanno quasi mai a braccetto :)
Grazie 1000. Ciao.

...

I don't know italian but I am the designer of Irixbox.com
If you can email me your suggestions in english I'll try to help.
I worked last night to make the sight show up in IE, since I think
that's what this thread is about. Thanks.
Bryan Schneiders
da...@dnetc.org