Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

καλησπέρα, θα ήθελα μια μικρή βοήθεια στο στυλ όσο αναφορά την php και html. Όταν δημιουργώ μια σελίδα με php και html αλλα ο κώδικας είναι πολύπλοκος τι να κάνω? Αυτό που κάνω τώρα είναι να ανοίγω <?php και να κλέίνω ?> συνεχώς τον php κώδικα...

 

απο ένα σημείο και μετά είναι πού άσχημο στο μάτι. Απόψεις?

 

ευχαριστώ πολυ!

Δημοσ.

απο ένα σημείο και μετά είναι πού άσχημο στο μάτι. Απόψεις?

Κώδικας είναι, όχι μοντέλο για φωτογράφηση!:P Χρησιμοποίησε ένα καλό IDE με μορφοποίηση για php και html (πχ netbeans ή zend studio), και θα δεις διαφορά

Δημοσ.

Μοίρασε τους Php/Html κώδικες πχ header,footer,sidebar,content και κάλεσε τα όλα σε ένα κεντρικό αρχείο με require/include

 

http://www.w3schools.com/php/php_includes.asp

 

Ναι αυτό εκανα το πρωί γιατί σε ένα αρχείο πραγματικά ΧΑΗΘΚΑ.

 

@dewn735 προφανώς! Απλά θέλω να είναι ευανάγνωστο και επειδή δεν είναι pro στην PHP είπα μπας και υπάρχει τπτ καλύτερο. Δουλεύω με notepad++ μόνο τώρα. :/ Έχει κάποιες ευκολίες απο έναν απλό editor αλλα και πάλι κάτι λείπει.

Δημοσ.

Κώδικας είναι, όχι μοντέλο για φωτογράφηση!:P

 

Αυτό. Φρόντισε να είναι συνεπής ο κώδικάς σου και μη δίνεις σημασία στο αν είναι όμορφος.

 

ΕΝΤΙΤ: Για PHP, ρίξε μια ματιά και στο Aptana.

Δημοσ.

Αφού όπως λες δεν είσαι "pro" στην PHP, δεν υπάρχει λόγος να ασχοληθείς με την «ποιότητα» του κώδικα. Τουλάχιστον πάνω σε αυτό το θέμα, όχι σε ασφάλεια-ταχύτητα-κλπ, εκεί εννοείται.

 

Δε δουλεύεις σε κάποια εταιρεία. Δε δουλεύεις πάνω σε κάποιο FOSS project. Γενικά, τον κώδικά σου δε πρόκειται να τον πάρει άλλος μετά από εσένα, οπότε και να μην είναι ευανάγνωστος klain. Και ακριβώς επειδή είσαι αρχάριος, δεν υπάρχει περίπτωση να φτιάξεις τόσο μεγάλο script που να μην είναι συντηρήσιμο γι αυτό το λόγο.

 

Συν κάτι επιπλέον: είσαι αρχάριος, οπότε θα μαθαίνεις συνέχεια νέα πράγματα και θα βελτιώνεσαι. Οπότε ο κώδικας που έγραφες προηγουμένως, δε θα σου φαίνεται καλός (ούτε και θα είναι). Οπότε κατά 99% δε θα μπαίνεις στη διαδικασία να συντηρήσεις-διορθώσεις το script, αλλά μάλλον θα πατάς Shift + Delete.

 

:P

 

Χμμ... από την άλλη βέβαια, οι κακές συνήθειες δύσκολα κόβονται, οπότε μήπως θα έπρεπε να μάθεις απ' την αρχή να γράφεις κώδικα σωστά;

 

Dunno. Διάλεξε τι είναι καλύτερο για σένα, σου είπαμε όλες (σχεδόν) τις επιλογές. :P

Δημοσ.

Σχετικά σωστά αυτά που είπες αλλά κώδικα γράφω εδώ και λίγα χρόνια σε άλλες γλώσσες βέβαια. Γνωρίζω κάποια πράγματα απλά ήθελα να μάθω αν υπάρχει τίποτα άλλο στην php. Κάποιος τρόπος που να μην χρειάζεται να ανοιγοκλείνω το <?php. Οπότε μάλλον όχι δεν υπάρχει και δεν υπάρχει και κανένα πρόβλημα. :) Απλά ερώτηση έκανα.

 

Ο κώδικας μου δεν ξέρω τι θα γίνει αλλά σίγουρα και κάποιος άλλος θα τον διαβάσει. Δεν δουλεύω ακριβώς σε εταιρεία αλλά έχω κάνει μια καλή δουλειά και ο λόγος που ψάχνομαι ακόμη είναι για να έχει μια γεύση απο επαγγελματισμό μέσα. Τεσπα είναι μια περίεργη κατάσταση. Αρχίζω και χρησιμοποιώ το Aptana και μου φαίνεται ότι αν το συνηθίσω ο κώδικας θα φεύγει νερό. Αρκεί να δουλεύει το μυαλό. Btw shitt+delete δεν κάνω ποτέ, απλά τα διορθώνω και προσπαθώ να τα κάνω χρήσιμα. :)

 

Το παρον που φτιάχνω αποτελείται απο καμιά 10ριά αρχεία και υπολογίζω πάνω κάνω κανά 1000 γραμμές. Δεν είναι τεράστιο project αλλα όχι για να πάει και στα σκουπίδια. Επίσης θα ήθελα να επενδύσω αρκετό χρόνο πάνω στην ασφάλεια όπως και λες :) Με ενδιαφέρει αρκετά αυτό το κομμάτι.

Δημοσ.

Εφόσον λοιπόν δεν είσαι και τόσο αρχάριος (sorry, αυτό υπέθεσα) θα πρέπει να στραφείς σε κάποιο template system. Ή ακόμα και να φτιάξεις κάποιο δικό σου (δεν είναι δύσκολο εάν δεν έχεις πολλές απαιτήσεις). Ακόμα και για μικρά projects σου λύνουν τα χέρια- διαχωρίζουν εξαιρετικά τον κώδικα απ'το παρουσιαστικό.

 

:)

Δημοσ.

Και επίσης να προσθέσω να μην ψάξεις/βρεις τρόπο να αποφεύγεις να γράφεις το <?php...?>, και, γενικότερα, οτιδήποτε θεωρείται standard practice, ειδικά εφόσον λες πως ο κώδικάς σου θα διαβάζεται και από άλλους. Κάνε τους το χατήρι (και έμμεσα και στον εαυτό σου) να δουλεύεις χωρίς να αγνοείς τα standards.

Δημοσ.

Η γενική φιλοσοφία είναι πολύ απλή.

 

Καθώς αναπτύσσεις τον κώδικα σου, κοίτα ποια στοιχεία είναι αυτά που τα επαναλαμβάνεις συχνά και απλά τοποθέτησε τα σε εξωτερικά αρχεία. Τώρα αν θέλεις μπορείς να οργανώσεις και τα εξωτερικά αρχεία σε άλλες ομάδες. Έτσι θα έχεις περισσότερα αρχεία από την μια, μικρότερα και ποιο εύκολα στην ανάγνωση από την άλλη.

 

Για IDE εγώ χρησιμοποιώ το phpDesigner το οποίο είναι πολύ καλό και αν θέλεις να το αγοράσεις, το κόστος τους είναι εξαιρετικά πολύ χαμηλό. Το μόνο που δεν έχει και θα ήταν πολύ χρήσιμο είναι code folding. Αν μπορέσεις να βρεις κάποιο IDE με code folding τότε θα είναι ακόμα ποιο εύκολο για εσένα να διαβάζεις τον κώδικα σου.

Δημοσ.

καλησπέρα, θα ήθελα μια μικρή βοήθεια στο στυλ όσο αναφορά την 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, τώρα πια έχω περάσει στο άλλο στρατόπεδο)

Δημοσ.

+1 στο διαχωρισμό του κώδικα του defacer

 

Προσωπικά μου αρέσει να προσθέτω ένα ένα ακόμη κομμάτι, το data layer το οποίο μπαίνει ανάμεσα στη βάση σου και το business logic που αναφέρει ο defacer.

 

Στο data layer γράφεις interfaces που καλύπτουν όλα τα σενάρια create/read/update/delete για τα data σου.

Ένα παράδειγμα που μια τέτοια οργάνωση μπορεί να σου φανεί χρήσιμη είναι το να αλλάξεις βάση δεδομένων. π.χ. από mysql σε mongodb. Το μόνο που θα χρειαστεί να αλλάξεις είναι το κώδικα των crud functions σου χωρίς να αγγίξεις το business layer.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...