poscore Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 καλησπέρα, θα ήθελα μια μικρή βοήθεια στο στυλ όσο αναφορά την php και html. Όταν δημιουργώ μια σελίδα με php και html αλλα ο κώδικας είναι πολύπλοκος τι να κάνω? Αυτό που κάνω τώρα είναι να ανοίγω <?php και να κλέίνω ?> συνεχώς τον php κώδικα... απο ένα σημείο και μετά είναι πού άσχημο στο μάτι. Απόψεις? ευχαριστώ πολυ!
NiKoS WSN Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Μοίρασε τους Php/Html κώδικες πχ header,footer,sidebar,content και κάλεσε τα όλα σε ένα κεντρικό αρχείο με require/include http://www.w3schools.com/php/php_includes.asp
dewn735 Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 απο ένα σημείο και μετά είναι πού άσχημο στο μάτι. Απόψεις? Κώδικας είναι, όχι μοντέλο για φωτογράφηση! Χρησιμοποίησε ένα καλό IDE με μορφοποίηση για php και html (πχ netbeans ή zend studio), και θα δεις διαφορά
poscore Δημοσ. 19 Ιουλίου 2012 Μέλος Δημοσ. 19 Ιουλίου 2012 Μοίρασε τους Php/Html κώδικες πχ header,footer,sidebar,content και κάλεσε τα όλα σε ένα κεντρικό αρχείο με require/include http://www.w3schools.com/php/php_includes.asp Ναι αυτό εκανα το πρωί γιατί σε ένα αρχείο πραγματικά ΧΑΗΘΚΑ. @dewn735 προφανώς! Απλά θέλω να είναι ευανάγνωστο και επειδή δεν είναι pro στην PHP είπα μπας και υπάρχει τπτ καλύτερο. Δουλεύω με notepad++ μόνο τώρα. :/ Έχει κάποιες ευκολίες απο έναν απλό editor αλλα και πάλι κάτι λείπει.
thanocaster Δημοσ. 19 Ιουλίου 2012 Δημοσ. 19 Ιουλίου 2012 Κώδικας είναι, όχι μοντέλο για φωτογράφηση! Αυτό. Φρόντισε να είναι συνεπής ο κώδικάς σου και μη δίνεις σημασία στο αν είναι όμορφος. ΕΝΤΙΤ: Για PHP, ρίξε μια ματιά και στο Aptana.
Haldol Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Αφού όπως λες δεν είσαι "pro" στην PHP, δεν υπάρχει λόγος να ασχοληθείς με την «ποιότητα» του κώδικα. Τουλάχιστον πάνω σε αυτό το θέμα, όχι σε ασφάλεια-ταχύτητα-κλπ, εκεί εννοείται. Δε δουλεύεις σε κάποια εταιρεία. Δε δουλεύεις πάνω σε κάποιο FOSS project. Γενικά, τον κώδικά σου δε πρόκειται να τον πάρει άλλος μετά από εσένα, οπότε και να μην είναι ευανάγνωστος klain. Και ακριβώς επειδή είσαι αρχάριος, δεν υπάρχει περίπτωση να φτιάξεις τόσο μεγάλο script που να μην είναι συντηρήσιμο γι αυτό το λόγο. Συν κάτι επιπλέον: είσαι αρχάριος, οπότε θα μαθαίνεις συνέχεια νέα πράγματα και θα βελτιώνεσαι. Οπότε ο κώδικας που έγραφες προηγουμένως, δε θα σου φαίνεται καλός (ούτε και θα είναι). Οπότε κατά 99% δε θα μπαίνεις στη διαδικασία να συντηρήσεις-διορθώσεις το script, αλλά μάλλον θα πατάς Shift + Delete. Χμμ... από την άλλη βέβαια, οι κακές συνήθειες δύσκολα κόβονται, οπότε μήπως θα έπρεπε να μάθεις απ' την αρχή να γράφεις κώδικα σωστά; Dunno. Διάλεξε τι είναι καλύτερο για σένα, σου είπαμε όλες (σχεδόν) τις επιλογές.
poscore Δημοσ. 20 Ιουλίου 2012 Μέλος Δημοσ. 20 Ιουλίου 2012 Σχετικά σωστά αυτά που είπες αλλά κώδικα γράφω εδώ και λίγα χρόνια σε άλλες γλώσσες βέβαια. Γνωρίζω κάποια πράγματα απλά ήθελα να μάθω αν υπάρχει τίποτα άλλο στην php. Κάποιος τρόπος που να μην χρειάζεται να ανοιγοκλείνω το <?php. Οπότε μάλλον όχι δεν υπάρχει και δεν υπάρχει και κανένα πρόβλημα. Απλά ερώτηση έκανα. Ο κώδικας μου δεν ξέρω τι θα γίνει αλλά σίγουρα και κάποιος άλλος θα τον διαβάσει. Δεν δουλεύω ακριβώς σε εταιρεία αλλά έχω κάνει μια καλή δουλειά και ο λόγος που ψάχνομαι ακόμη είναι για να έχει μια γεύση απο επαγγελματισμό μέσα. Τεσπα είναι μια περίεργη κατάσταση. Αρχίζω και χρησιμοποιώ το Aptana και μου φαίνεται ότι αν το συνηθίσω ο κώδικας θα φεύγει νερό. Αρκεί να δουλεύει το μυαλό. Btw shitt+delete δεν κάνω ποτέ, απλά τα διορθώνω και προσπαθώ να τα κάνω χρήσιμα. Το παρον που φτιάχνω αποτελείται απο καμιά 10ριά αρχεία και υπολογίζω πάνω κάνω κανά 1000 γραμμές. Δεν είναι τεράστιο project αλλα όχι για να πάει και στα σκουπίδια. Επίσης θα ήθελα να επενδύσω αρκετό χρόνο πάνω στην ασφάλεια όπως και λες Με ενδιαφέρει αρκετά αυτό το κομμάτι.
Haldol Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Εφόσον λοιπόν δεν είσαι και τόσο αρχάριος (sorry, αυτό υπέθεσα) θα πρέπει να στραφείς σε κάποιο template system. Ή ακόμα και να φτιάξεις κάποιο δικό σου (δεν είναι δύσκολο εάν δεν έχεις πολλές απαιτήσεις). Ακόμα και για μικρά projects σου λύνουν τα χέρια- διαχωρίζουν εξαιρετικά τον κώδικα απ'το παρουσιαστικό.
thanocaster Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Και επίσης να προσθέσω να μην ψάξεις/βρεις τρόπο να αποφεύγεις να γράφεις το <?php...?>, και, γενικότερα, οτιδήποτε θεωρείται standard practice, ειδικά εφόσον λες πως ο κώδικάς σου θα διαβάζεται και από άλλους. Κάνε τους το χατήρι (και έμμεσα και στον εαυτό σου) να δουλεύεις χωρίς να αγνοείς τα standards.
merianos Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Η γενική φιλοσοφία είναι πολύ απλή. Καθώς αναπτύσσεις τον κώδικα σου, κοίτα ποια στοιχεία είναι αυτά που τα επαναλαμβάνεις συχνά και απλά τοποθέτησε τα σε εξωτερικά αρχεία. Τώρα αν θέλεις μπορείς να οργανώσεις και τα εξωτερικά αρχεία σε άλλες ομάδες. Έτσι θα έχεις περισσότερα αρχεία από την μια, μικρότερα και ποιο εύκολα στην ανάγνωση από την άλλη. Για IDE εγώ χρησιμοποιώ το phpDesigner το οποίο είναι πολύ καλό και αν θέλεις να το αγοράσεις, το κόστος τους είναι εξαιρετικά πολύ χαμηλό. Το μόνο που δεν έχει και θα ήταν πολύ χρήσιμο είναι code folding. Αν μπορέσεις να βρεις κάποιο IDE με code folding τότε θα είναι ακόμα ποιο εύκολο για εσένα να διαβάζεις τον κώδικα σου.
Haldol Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Υποστήριξη για code-folding στο phpDesigner θα δούμε μετά την 8,1 έκδοση, μιας και το χρησιμοποιώ κι εγώ.
defacer Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 καλησπέρα, θα ήθελα μια μικρή βοήθεια στο στυλ όσο αναφορά την php και html. Όταν δημιουργώ μια σελίδα με php και html αλλα ο κώδικας είναι πολύπλοκος τι να κάνω? Αυτό που κάνω τώρα είναι να ανοίγω <?php και να κλέίνω ?> συνεχώς τον php κώδικα... απο ένα σημείο και μετά είναι πού άσχημο στο μάτι. Απόψεις? Αν ρωτήσεις 10 ανθρώπους μπορεί να ακούσεις 10 διαφορετικά πράγματα. Ορίστε το δικό μου: Χώρισε τον κώδικά σου σε "business logic" και "presentation logic" Τι σημαίνει αυτό. Πες ότι θέλεις να πάρεις μια παράμετρο από url, να διαβάσεις κάποια σχετικά αποτελέσματα από τη db και να τα εμφανίσεις. Ο κώδικας θα μπορούσε να μοιάζει κάπως μ' αυτό: >$query = $_GET['query']; $sql = "SELECT * FROM x WHERE foo = :foo"; // parameterized statement, δες http://www.php.net/manual/en/pdo.prepare.php $result = do_something_with_database($sql, $parameters); // πες ότι επιστρέφει πίνακα echo '<ul>'; foreach ($result as $row) { echo '<ul>Name: '.$row->name.'</li>'; } echo '</ul>'; Το πρώτο μέρος (μέχρι και το $result) είναι το business logic -- με άλλα λόγια, ο κώδικας που "κάνει τη δουλειά". Το δεύτερο μέρος (από το echo) είναι το presentation logic -- ο κώδικας που παίρνει μασημένη τροφή και την εμφανίζει στο χρήστη. (Το αρχειο/αρχεία που περιέχουν το presentation logic πολύ συχνά τα λέμε "views"). Αυτά τα δύο πρέπει να μπουν σε διαφορετικά αρχεία. Πες ότι το κάνεις ως εξής: business.php >$query = $_GET['query']; $sql = "SELECT * FROM x WHERE foo = :foo"; // parameterized statement, δες http://www.php.net/manual/en/pdo.prepare.php $result = do_something_with_database($sql, $parameters); // πες ότι επιστρέφει πίνακα // εδώ τώρα έχοντας κάνει τη δουλειά μεταφέρεις τον έλεγχο στο view show_view('presentation.php', array('result' => $result)); // Μια helper function η οποία έχει τεράστια σημασία (δες τι κάνει η extract) // Στην πράξη δε θα είναι 2 γραμμές αλλά 10, όμως αυτό είναι το ζουμί: function show_view($__view, $__vars) { extract($__vars); include($__view); } presentation.php > <ul> <?php foreach ($result as $row) : ?> <!-- εναλλακτική σύνταξη foreach --> <li><?php echo $row->name;?></li> <?php endforeach; ?> <!-- εναλλακτική σύνταξη foreach (για να μη χαθεί η μπάλα με αγκύλες) --> </ul> Εννοείται πως αν για οργανωτικούς λόγους είναι καλό να χωριστεί το business ή το presentation σε περισσότερα του ενός αρχεία το κάνεις, αυτό είναι ένα άλλο θέμα τελείως ανεξάρτητο από αυτό που περιγράφω εδώ. Τι κερδίζεις έτσι - Το business κομμάτι δεν έχει μέσα HTML, είναι pure κώδικας. Τον διαβάζεις, τον καταλαβαίνεις, δε σε αποσπά κάτι από τη λειτουργία του. - Το presentation κομμάτι δεν έχει μέσα κώδικα εκτός από κάτι foreach κλπ τα οποία χρειάζονται για να εμφανίσεις πίνακες. Αυτό σημαίνει ότι δεν πρόκειται να υπάρχει κώδικας σπασμένος στα 2 κομμάτια με 50 γραμμές HTML ανάμεσα οπότε άντε τρέχε γύρευε αυτό το else που βλέπω εδώ σε ποιό if αντιστοιχεί. - Μπορείς πολύ εύκολα να κάνεις οποιαδήποτε αλλαγή σε καθένα από τα 2 κομμάτια χωρίς να χαλάσεις το πρόγραμμά σου, αρκεί να τηρείς το εξής απλό "συμβόλαιο": το view παίρνει σαν "παράμετρο" μια μεταβλητή $results η οποία είναι πίνακας από objects. Το πώς θα προκύψει αυτή η μεταβλητή και το τι θα κάνει το view μαζί της είναι πλέον τελείως ξεχωριστά ζητήματα. Further reading http://en.wikipedia.org/wiki/Separation_of_presentation_and_content http://en.wikipedia.org/wiki/Separation_of_concerns http://stackoverflow.com/questions/62617/whats-the-best-way-to-separate-php-code-and-html http://stackoverflow.com/questions/436014/why-should-i-use-templating-system-in-php (για το τελευταίο: παλιότερα ήμουν οπαδός της χρήσης templating engines, τώρα πια έχω περάσει στο άλλο στρατόπεδο)
x_maras Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 +1 στο διαχωρισμό του κώδικα του defacer Προσωπικά μου αρέσει να προσθέτω ένα ένα ακόμη κομμάτι, το data layer το οποίο μπαίνει ανάμεσα στη βάση σου και το business logic που αναφέρει ο defacer. Στο data layer γράφεις interfaces που καλύπτουν όλα τα σενάρια create/read/update/delete για τα data σου. Ένα παράδειγμα που μια τέτοια οργάνωση μπορεί να σου φανεί χρήσιμη είναι το να αλλάξεις βάση δεδομένων. π.χ. από mysql σε mongodb. Το μόνο που θα χρειαστεί να αλλάξεις είναι το κώδικα των crud functions σου χωρίς να αγγίξεις το business layer.
thanocaster Δημοσ. 20 Ιουλίου 2012 Δημοσ. 20 Ιουλίου 2012 Ε, αφού ειπώθηκαν όλα τα παραπάνω, δεν έχω παρά να προσθέσω απλά κι ένα λινκ για να το πάω κι ένα βήμα παραπέρα, και να τους φάω και όλη τη δόξα. The Model - View - Controller coding structure
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα