Συζήτηση σχετικά με τις PHP template engines

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
orfeo
Δημοσιεύσεις: 98
Εγγραφή: 17 Μάιος 2001 03:00
Τοποθεσία: Αθήνα

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από orfeo » 15 Φεβ 2011 15:32

Δεν κάνεις τίποτα για χάρη του smarty, εσένα το κάνεις.

Δεν νομίζεις ότι όλη η επεξεργασία των data θα πρέπει να γίνετε σε επίπεδο model; Να τραβάς από την βάση σου ότι χρειάζεσαι, να τα φτιάχνεις όπως τα χρειάζεσαι (data μόνο ότι html ή js) και μετά να τα περνάς στο view.

Έχει χυθεί πολύ μελάνι (pixels μάλλον) για το fat model vs skinny model και δεν φιλοδοξω να το λυσουμε οι δυο μας. I want my models fat and my views minimal. :D

nbc
Honorary Member
Δημοσιεύσεις: 526
Εγγραφή: 05 Σεπ 2009 20:12
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από nbc » 15 Φεβ 2011 16:08

Ζούμε την εποχή όπου ο όρος "dynamic" έχει διευρυνθεί, σχεδόν ξεχυλώσει. Στα πάσης φύσεως communities, εν γένει sites με user activities, σε ένα Url αντιστοιχούν περισσότερες των μία σελίδων. Εδώ στο FS, για παράδειγμα, στο συγκεκριμένο utl που βλέπουμε αυτήν τη στιγμή, η δικιά μου σελίδα γράφει "nbc" και ότι δεν έχω μηνύματα. Η δική σας σελίδα διαφέρει. Του cordis, του stuff, του unregistered, κλπ, διαφέρει περισσότερο. Όχι μόνο με βάση το security token του account αλλά και με βάση το ίδιο το account. Που σημαίνει πως η σελίδα δεν μπορεί να γίνει cached, τουλάχιστον όχι αποδοτικά και με ασφάλεια. Συνεπώς, το overhead του template parsing σε κάθε page view είναι παράγοντας που δεν μπορεί να αγνοηθεί.

Πέραν αυτού, όπως ο korgr εντέχνως έδειξε με το παράδειγμά του, μια λύση τύπου smarty σημαίνει πως ο developer θα πρέπει να σκεφτεί εκ των προτέρων τι μπορεί να ζητήσει ο designer - στο παρόν και στο μέλλον - να τα κάνει $smarty->register_*() για να είναι διαθέσιμα με σέξι αγκυλάκια. Εν τω μεταξύ, η μνήμη έχει υπερ-διπλασσιαστεί και η CPU κάνει υπερωρίες.

Αντιθέτως, σε μια καθαρόαιμη λύση php, sky is the limit. Το template ρουφιέται σε ms, και μπορεί να κάνει (και συνήθως κάνει) πράγματα που εκπλήσσουν ακόμη και τον developer.

Η όλη ιστορία του debate, νομίζω, επικεντρώνεται στο συντακτικό. Τα περί ασφάλειας και πυραύλων τα προσπερνώ - είναι για μένα άνευ ερείσματος. Ναι, το {$var} είναι πιο σέξι από το <?= $var ?> και πολύ πιο σέξι από το <?php echo $var ?>. Ένας πόντος στο smarty. Λυπάμαι, αλλά δεν είναι αρκετός. Προτιμώ την απεριόριστη ελευθερία και το μικρότερο δυνατόν overhead.

Άβαταρ μέλους
unik
Δημοσιεύσεις: 60
Εγγραφή: 11 Απρ 2008 18:05
Τοποθεσία: Θεσσαλονίκη

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από unik » 15 Φεβ 2011 16:19

Δε ρίχνεις και μια ματιά στο Drupal...
Είναι αρκετά πιο ευέλικτο στις customιες από τα άλλα 2 και ειδικά αν έχεις γνώσεις προγραμματισμού και μελετήσεις λίγο τα APIs του γίνεται πραγματικά πανίσχυρο.

Αν τώρα θες ακόμα πιο "framework oriented" λύση, υπάρχει και το Django 8)

Άβαταρ μέλους
Croc
Δημοσιεύσεις: 105
Εγγραφή: 18 Μαρ 2006 22:40
Τοποθεσία: Volos
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από Croc » 15 Φεβ 2011 16:30

Κώδικας: Επιλογή όλων

Όποιος αποφασίσει να φτιάξει δικό του CMS θα κάνει πάρα πολλά λάθη και θα μάθει πάρα πολλά πράγματα.

Επίσης στο τέλος μπορεί αυτό που θα έχει φτιάξει να είναι πραγματικά εξαίσιο.
ειμαι της άποψης της χρήσης του Joomla. Εφοσον ομως εισαι επαγελματίας και πρεπει να ανταποκρίνεσαι στις αναγκες των πελατών σου, θα πρεπει να γνωριζεις πως να το επεκτήνεις.

Προσωπικα ειμαι JoomlaFan :kaloe: αλλα εχει χρειαστει να γράψω και ενα μινι custom cms γιατι δεν έχω παροπίδες, πολυ κώδικας για ενα απλο site ειναι too much :hammer:

Άβαταρ μέλους
dimsis
Reporter
Δημοσιεύσεις: 7994
Εγγραφή: 25 Ιούλ 2001 03:00

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από dimsis » 15 Φεβ 2011 17:25

Πάντως επί της ευκαιρίας μια και το κουβεντιάζουμε να πω και κάτι άσχετο, που παρατηρώ στην php που όντως θα μπορούσε να βελτιωθεί ώστε να είναι κάνει πιο "ευανάγνωστο" τον κώδικα.

Στο coldfusion όταν θέλεις να κάνεις το σπαγγέτι σου δεν χρειάζεται να ανοίγεις 500 tags του στυλ <?php echo tade

Ανοίγεις ένα "block" <cfoutput> </cfoutput> και μέσα σε αυτό ρίχνεις μαζί και html και cfml μαζί. Θέλεις να δείξεις ας πούμε τον κώδικα που έδωσε και ο Νότης παραπάνω;

Κώδικας: Επιλογή όλων

<cfoutput>
<div class="book_title"> 
   <cfif  url>
      <a class="link_book" href="#url#">#title#</a> 
   <cfelse>
    #title# 
   </cfif>
</div>
</cfoutput>
Για αυτό φαίνεται και δεν φτιάχνουν template engines για το Coldfusion (φαίνεται και από προηγούμενο link του cherouvim προς Wikipedia), παρά ελαχίστων εξαιρέσεων.
Προσοχή, σε καμία περίπτωση δεν είναι προβοκατόρικη η παραπάνω επισήμανση ώστε να γίνει μια cfml vs php κουβέντα. Απλώς το επισημαίνω επειδή συζητάμε και για καθαρότητα κώδικα και πιστεύω πως η php θα μπορούσε να είχε κάνει κάποια βήματα παραπάνω μετά από τόσες versions στο θέμα των templates.

Πάνο (panosru) γράψε μας αν έχεις χρόνο και εσύ την άποψη σου επί του θέματος ή τι ακολουθείς στην πράξη όταν γράφεις με zend frameorwk ή plain php.

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από cherouvim » 15 Φεβ 2011 17:37

nbc έγραψε:Συνεπώς, το overhead του template parsing σε κάθε page view είναι παράγοντας που δεν μπορεί να αγνοηθεί.

...το template ρουφιέται σε ms

Ο χρόνος parsing του μέσου page template στο μέσο templating engine (ακόμα και χωρίς template caching) δεν έχει καμία σχέση με τη καθυστέρηση που μπορεί να προκύψει από επικοινωνία με τη βάση. Οπότε μέχρι να πετύχουμε 10ms render time στην εφαρμογή μας μάλλον μπορούμε (και πρέπει) να αγνοήσουμε το όποιο template overhead.
nbc έγραψε:Η όλη ιστορία του debate, νομίζω, επικεντρώνεται στο συντακτικό.
Όχι. Είναι θέμα layering, coupling και του ενδεχόμενου spaghetti που μπορεί να προκύψει καθώς το πρόγραμμα επεκτείνεται και αλλάζει βιαστικά. Το "yet another layer" (για το template) δεν είναι υποχρεωτικό, και σίγουρα είναι overkill σε μικρά projects. Σε μεγάλα όμως μάλλον χρειάζεται. Και αν στην PHP δεν βάλεις template δεν πειράζει, μπορείς να την χρησιμοποιήσεις ως template αλλά πρέπει να το κάνεις σωστά και κατά MVC. Αν μπλέκεις τα concerns θα την πατήσεις αργότερα.

Όταν χρειαστεί να δουλέψεις σε legacy εφαρμογή που στα .php αρχεία των 2000+ γραμμών βρίσκεις 5 γλώσσες (php, html, css, javascript, sql) και 16 επίπεδα nested ifs τότε το σωστό layering είναι κάτι που σίγουρα θα σε βοηθούσε.

Ο Apostolis_38 πιο πριν είπε οτι, όχι, θέλει να πάει εκεί καρφωτά και να βάλει όπου να'ναι αυτό που χρειάζεται εκείνη τη στιγμή. Ναι, σαφώς και γίνεται. Και έτσι δημιουργούνται τα projects τέρατα. Το έχει δείξει και η ιστορία σε όλα τα γνωστά προγράμματα που από ένα σημείο και μετά παίζει major rewrite του πυρήνα και του API.
nbc έγραψε:Τα περί ασφάλειας και πυραύλων τα προσπερνώ - είναι για μένα άνευ ερείσματος.
Αν νιώθεις οτι είναι OK να ξεκινάνε transactions και να σβήνονται αρχεία από το view layer ειδικά όταν αυτό προκύπτει από eval php snippets που έρχονται από τη βάση, τότε ΟΚ, πάσο. Φαντάζομαι δεν το έχεις δει ποτέ σε production αυτό να συμβαίνει.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από ThyClub » 15 Φεβ 2011 18:59

Συγκεκριμένα για την Smarty που έχω δουλέψει αρκετά...

Ο τρόπος που δουλεύει:

Μέσα απο την php μας ορίζουμε μεταβλητές, objects κ σταθερές τις οποίες εμείς θέλουμε να εμφανίζονται στο template.

Για παράδειγμα στην smarty μπορείς να κάνεις ένα :

Κώδικας: Επιλογή όλων

&#123;$QoolMO->article.authorname&#125;
και να τυπώσεις τον author του article που ανήκει στο object QoolMO (απευθείας μέσα απο τον κώδικα του Qool για να μην γράφω απο την αρχή)

όπως και ένα:

Κώδικας: Επιλογή όλων

&#123;$Qool.url&#125;
για να πάρεις μια θέση απο ένα array

όπως και ένα :

Κώδικας: Επιλογή όλων

&#123;$url&#125;
για να εμφανίσεις μια μεταβλητή.

Στην php θα έπρεπε να κάνεις :

Κώδικας: Επιλογή όλων

<? echo $QoolMO->article&#91;'authorname'&#93;?>

Κώδικας: Επιλογή όλων

<? echo $Qool&#91;'url'&#93;?>

Κώδικας: Επιλογή όλων

<? echo $url?>
Άρα όσο πιο complex γίνεται το αντικείμενο που προσπαθείς να εμφανίσεις τόσο καλύτερα φαίνεται γιατί πρέπει να χρησιμοποιήσεις την smarty.

PHP Files at the end
Ποιός είπε ότι η smarty κάνει parse τα templates συνέχεια; Η smarty κάνει ακριβώς το αντίθετο. Κάνει μια φορά μόνο parse τα αρχεία και τα κάνει compile σε πραγματικά php αρχεία, τα οποία αποθηκεύει σε ένα φάκελο που εμείς ορίζουμε και τα οποία απλά μετά καλεί μέχρι να εντοπίσει ότι υπάρχουν αλλαγές στο tpl file μας και τότε μόνο το ξανακάνει compile.
Άρα το επιχείρημα για load overhead δεν ταιριάζει στην smarty.
Ένα compiled template file της smarty είναι περίπου της μορφής:

Κώδικας: Επιλογή όλων

<table id="mainTable" align="center">
	<tr>
		<td>
		<h1>UserInfo</h1>
		<?php echo $this->_tpl_vars&#91;'QoolUI'&#93;->userInfo&#91;'fname'&#93;; ?>
 <?php echo $this->_tpl_vars&#91;'QoolUI'&#93;->userInfo&#91;'lname'&#93;; ?>
...
...
...
Αυτό το αρχείο δεν απασχολεί κανέναν. Ούτε τον developer ούτε τον designer.

Debug Console
Μπορείς να έχεις όλες τις μεταβλητές που σου δίνει η php σε ένα popup window. Δεν νομίζω να έχει κάτι τέτοιο η php (δεν ξέρω απο firebugs κτλ)

Plugins
Όταν ένα select γίνεται με :

Κώδικας: Επιλογή όλων

<select name="avatar" id="avatar">
&#123;html_options values=$avatars selected=$useravatar output=$avatars&#125;
</select>
ενώ στην php (μπορείτε να κάνετε αλλαγές στην php που παραθέτω αλλά πάλι η διαφορά είναι χαώδης!!!):

Κώδικας: Επιλογή όλων

<select name="avatar" id="avatar">
<?php foreach&#40;$avatars&#41; as $avas&#41;&#58;?>
<?php if&#40;$avas&#91;'name'&#93;==$useravatar&#41;&#123;
$selected  = "selected";
&#125;else&#123;
$selected='';
&#125;
?>
<option <?php echo $selected?> value="<?php echo $avas&#91;'name'&#93;?>"><?php echo $avas&#91;'name'&#93;?></option>
<?php endforeach?>
</select>
Το ίδιο κάνουν και τα 2. Εμφανίζουν ένα select με έλεγχο για το ποιό option θα είναι selected.

Υπάρχουν αρκετές δεκάδες απο αυτά τα plugins :wink: [/img]

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από pimpogio » 15 Φεβ 2011 19:03

με pure php v2

Κώδικας: Επιλογή όλων

<div class="book_title">
<?php if&#40;$row->url&#41;&#58; ?>
            <a class="link_book" href="<?php echo $row->url;?>"> <?php echo $row->title;?></a>
<?php else&#58; echo $row->title; endif;?>
</div>

με την Χtemplateengine:

Κώδικας: Επιλογή όλων

<div class="book_title">
   &#123;if $row.url&#125;
      <a class="link_book" href="&#123;$row.url&#125;">&#123;$row.title&#125;</a>
   &#123;else&#125;
     &#123;$row.title&#125;
   &#123;/if&#125;
</div>

απλα το ξαναεβαλα για τις templating εντολες που εχει η ιδια η php μεσα (αφου ειναι και template engine) ..

if:
else:
endif;

for:
endfor;

foreach:
endforeach;

αντι

if{
}else{
}
for{
}
foreach{
}
αν αυτα δεν ειναι templating tags τοτε τι ειναι ? και τα εχει η php στο core...

η διαφορα αμα παρατηρησατε ειναι 1 echo ...
Τελευταία επεξεργασία από το μέλος pimpogio την 15 Φεβ 2011 19:16, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από ThyClub » 15 Φεβ 2011 19:14

Κώδικας: Επιλογή όλων

<div class="book_title">
<?php if&#40;$row->url&#41;&#58; ?>
            <a class="link_book" href="<?php echo $row->url;?>"> <?php echo $row->title;?></a>
<?php else&#58; echo $row->title; endif;?>
</div>
Δείξε το παραπάνω σε ενα designer που δεν έχει ιδέα απο php και πέστου ότι η διαφορά είναι μόνο ένα echo ...

Άβαταρ μέλους
Khronos
Δημοσιεύσεις: 754
Εγγραφή: 11 Δεκ 2006 14:43
Τοποθεσία: Ηράκλειο

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από Khronos » 15 Φεβ 2011 19:29

ThyClub έγραψε:

Κώδικας: Επιλογή όλων

<div class="book_title">
<?php if&#40;$row->url&#41;&#58; ?>
            <a class="link_book" href="<?php echo $row->url;?>"> <?php echo $row->title;?></a>
<?php else&#58; echo $row->title; endif;?>
</div>
Δείξε το παραπάνω σε ενα designer που δεν έχει ιδέα απο php και πέστου ότι η διαφορά είναι μόνο ένα echo ...
Όπως ειπώθηκε και σε προηγούμενα ποστ, το θέμα δεν είναι αν ξέρει ή δεν ξέρει ο designer αφού ούτως ή άλλως θα χρειαστεί να μάθει είτε php είτε smarty αλλά το πόσο ξεκάθαρος είναι ο κώδικας.

Άβαταρ μέλους
ThyClub
Honorary Member
Δημοσιεύσεις: 5312
Εγγραφή: 17 Νοέμ 2003 00:21
Τοποθεσία: Hell's Kitchen
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από ThyClub » 15 Φεβ 2011 19:34

αλλά το πόσο ξεκάθαρος είναι ο κώδικας
Πάμε πάλι:

Κώδικας: Επιλογή όλων

<div class="book_title">
<?php if&#40;$row->url&#41;&#58; ?>
            <a class="link_book" href="<?php echo $row->url;?>"> <?php echo $row->title;?></a>
<?php else&#58; echo $row->title; endif;?>
</div>

Κώδικας: Επιλογή όλων

<div class="book_title">
   &#123;if $row.url&#125;
      <a class="link_book" href="&#123;$row.url&#125;">&#123;$row.title&#125;</a>
   &#123;else&#125;
     &#123;$row.title&#125;
   &#123;/if&#125;
</div>
γνώμες;

Apostolis_38
Δημοσιεύσεις: 1969
Εγγραφή: 14 Φεβ 2008 16:20
Τοποθεσία: ΠΕΙΡΑΙΑΣ

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από Apostolis_38 » 15 Φεβ 2011 19:57

cherouvim έγραψε:Όταν χρειαστεί να δουλέψεις σε legacy εφαρμογή που στα .php αρχεία των 2000+ γραμμών βρίσκεις 5 γλώσσες (php, html, css, javascript, sql) και 16 επίπεδα nested ifs τότε το σωστό layering είναι κάτι που σίγουρα θα σε βοηθούσε.

Ο Apostolis_38 πιο πριν είπε οτι, όχι, θέλει να πάει εκεί καρφωτά και να βάλει όπου να'ναι αυτό που χρειάζεται εκείνη τη στιγμή. Ναι, σαφώς και γίνεται. Και έτσι δημιουργούνται τα projects τέρατα. Το έχει δείξει και η ιστορία σε όλα τα γνωστά προγράμματα που από ένα σημείο και μετά παίζει major rewrite του πυρήνα και του API.
Δυστυχώς τα έργα τέρατα δεν δημιουργούνται από τον "καρφωτό" ή όχι κώδικα.
Τα projects τέρατα δημιουργούνται από την ανάγκη να κατασκευάσεις κάτι το, οσο το δυνατόν, γενικό και αόριστο που να μπορεί να καλύψει πολλές και ετερόκλητες ανάγκες.
Εχω φτιάξει εφαρμογές με το 1/20 του smarty και (ειδικά) του Joomla/Wordpress. Και με πολύ καλή "επεκτασιμότητα".
Οχι επειδή είμαι μάγκας, προγραμματισταράς ή οτιδήποτε άλλο.
Απλώς επειδή πέταξα έξω οτιδήποτε δεν χρειάζομαι. Και η κάλυψη των νέων αναγκών είναι μια-δυο functions ή μια class ή μιας-δυο σελίδων επιπλέον και τέρμα.
Γι αυτό και δεν βλέπω σε τι μπορεί να εξυπηρετεί το να προσθέσεις ένα ακόμα "layer".

Ναι υπάρχει η ανάγκη για οργάνωση των project μας. Οχι μόνο για τον designer ή τον επόμενο developer αλλά πρώτα απ' όλα για μας τους ίδιους.
Απ' ότι βλέπω όμως η οργάνωση αυτή είναι ένα πολύ προσωπικό θέμα (εγώ πιστεύω πως είναι και από τα θέματα που πρέπει να το έχεις όπως λέμε) και δεν μπορεί να σε σώσει καμμία εφαρμογή ή template engine ή framework κ.λ.π. κ.λ.π.
Μια καλή/περιγραφική δομή φακέλων-αρχείων, σωστή αρχειοθέτηση, ευκρινή σχόλια, επεξηγηματικοί ορισμοί σε μεταβλητές/functions κ.λ.π. κ.λ.π. για μένα βοηθούν περισσότερο.

Θα μου πείς και τι κάνεις όταν δουλεύεις σε ένα team (ίσως ο μόνος λόγος ύπαρξης αυτών των εφαρμών);
Παραχωρήσεις :D
Εχω δει project teams να δουλεύουν και είχαν δημιουργήσει τόσα file versions που δεν θυμόντουσαν που είχαν "εκείνη την αλλαγή που έκανα τη Δευτέρα".
Αρα λοιπόν πιστεύω πως τα template engines δεν έχουν να κάνουν τόσο πολύ με την "οργάνωση".
Οπότε ποιός ο λόγος υπαρξή τους;
Κατά τη γνώμη μου είναι απλώς μια τάση, μέσα στις τόσες, που υπήρξε στην υλοποίηση web εφαρμογών.
Ηδη απ' ότι φαίνεται υπάρχουν αυτοί που την θεωρούν "περιττή". Οπως φυσικά και αυτοί που τη γουστάρουν και θέλουν να την χρησιμοποιούν γιατί έτσι.


Προσωπική μου άποψη επαναλαμβάνω.


editThy, ψηφίζω τον δεύτερο κώδικα. :P

pimpogio
Δημοσιεύσεις: 1080
Εγγραφή: 28 Δεκ 2010 14:08

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από pimpogio » 15 Φεβ 2011 19:59

και τα 2 ειναι το ιδιο κατανοητα...
Αλλα στη 2η περιπτωση χρησιμοποιεις κατι εκτος core php που δεν συντηρητε απο την ομαδα αναπτυξης της php εχεις δηλαδη μια εξωτερικη lib που η ομαδα αναπτυξης της και η ομαδα χρησης της ειναι πολυ μικροτερη απο αυτην της php.Δηλαδη εξαρτασε εκτος απο την php και απο την Xsmarty.

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από dva_dev » 15 Φεβ 2011 20:01

Μπορεί να είμαι εντελώς offtopic αλλά οι διαφορές μου φαίνονται αστείες στο τελευταίο παράδειγμα του ThyClub, είναι απλώς μερικοί χαρακτήρες παραπάνω. Δεν ξέρω πως το βλέπουν οι designers, ίσως αυτοί οι παραπάνω χαρακτήρες να κάνουν σημαντική διαφορά...

Αντιθέτως στο
Όταν ένα select γίνεται με :
κώδικας:

<select name="avatar" id="avatar">
{html_options values=$avatars selected=$useravatar output=$avatars}
</select>

ενώ στην php (μπορείτε να κάνετε αλλαγές στην php που παραθέτω αλλά πάλι η διαφορά είναι χαώδης!!!):
κώδικας:

<select name="avatar" id="avatar">
<?php foreach($avatars) as $avas):?>
<?php if($avas['name']==$useravatar){
$selected = "selected";
}else{
$selected='';
}
?>
<option <?php echo $selected?> value="<?php echo $avas['name']?>"><?php echo $avas['name']?></option>
<?php endforeach?>
</select>
Στο 2o σημείο αν και φαινομενικά είναι πιο μπέρδεμα (αν και σε design view που θα δουλεύουν οι designers απλώς θα υπάρχει ένα εικονίδιο ότι εκεί υπάρχει php κώδικας) είναι ξεκάθαρο ότι μέσα στο select εμφανίζεται κάτι (ένα option με μερικές παραμέτρους). Στο smarty πού φαίνεται ότι εμφανίζεται κάτι; (βασικά τι είναι αυτό; option; select; a; ul; li; div; )

Πάλι μπορεί να είναι ιδέα μου επειδή έχω μικρή σχέση με την php και καμία με τη smarty. Το πιο κοντινό (εμφανισιακά όπως βλέπω) στη smarty, που έχω δουλέψει είναι τα srf (server response files).

Άβαταρ μέλους
cherouvim
Script Master
Δημοσιεύσεις: 3137
Εγγραφή: 13 Ιούλ 2005 22:56
Τοποθεσία: Athens, Greece
Επικοινωνία:

Συζήτηση σχετικά με τις PHP template engines

Δημοσίευση από cherouvim » 15 Φεβ 2011 20:08

Apostolis_38 έγραψε:Δυστυχώς τα έργα τέρατα δεν δημιουργούνται από τον "καρφωτό" ή όχι κώδικα.
ΟΚ προφανώς από διάφορους λόγους αλλά καλύτερα να μην το συζητήσουμε εδώ. Sorry για το offtopic.
Apostolis_38 έγραψε:Γι αυτό και δεν βλέπω σε τι μπορεί να εξυπηρετεί το να προσθέσεις ένα ακόμα "layer".
Δεν είναι υποχρεωτική η χρήση και μακάρι να είσαι συνεχώς σε projects που δεν θα δεις τέρατα στο view layer.
Apostolis_38 έγραψε:Εχω δει project teams να δουλεύουν και είχαν δημιουργήσει τόσα file versions που δεν θυμόντουσαν που είχαν "εκείνη την αλλαγή που έκανα τη Δευτέρα".
Development χωρίς scm εννοείς; Προφανώς αυτοί έχουν πιο θεμελιώδη προβλήματα να λύσουν από το αν θα παίξουν με templating engine :)
Apostolis_38 έγραψε:Αρα λοιπόν πιστεύω πως τα template engines δεν έχουν να κάνουν τόσο πολύ με την "οργάνωση".
Δεν έχουν να κάνουν με την οργάνωση. Λύνουν άλλο πρόβλημα (αυτό του templating). Η χρήση τους όμως σου επιβάλει οργάνωση, τουλάχιστον στο κομμάτι του controller προς το view.
Apostolis_38 έγραψε:Κατά τη γνώμη μου είναι απλώς μια τάση, μέσα στις τόσες, που υπήρξε στην υλοποίηση web εφαρμογών.
Τάση; Σαν να λέμε μόδα; Δεν θα το έλεγα γιατί λύνει πραγματικό πρόβλημα. Είναι σαν να λες οτι τα RDBMS είναι τάση και οτι όλοι θα έπρεπε να δουλεύουμε με text files για storage.

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες