50+ κόλπα και συμβουλές PHP για αρχάριους και προγραμματιστές

Η PHP είναι η πιο χρήσιμη γλώσσα στη δημιουργία ιστολογίων και ιστότοπων, έχει πολλές λειτουργίες που μπορούν να χρησιμοποιηθούν για την παραγωγή ακόμη περισσότερων προσαρμοσμένων συναρτήσεων. Συγκεντρώσαμε τα πιο χρήσιμα Κόλπα και συμβουλές PHP για αρχάριους και ακόμη και προγραμματιστές. Αυτά τα κόλπα PHP κάνουν την κωδικοποίησή σας παραγωγική και πιο αποτελεσματική.

50+ PHP κόλπα και συμβουλές για αρχάριους

Λίστα με κόλπα και συμβουλές PHP

1. Η ηχώ είναι πιο γρήγορη από την εκτύπωση.

2. Το να τυλίξετε τη συμβολοσειρά σας σε μονά εισαγωγικά (') αντί για διπλά εισαγωγικά (") είναι πιο γρήγορο επειδή η PHP αναζητά μεταβλητές μέσα στο "..." και όχι στο "...", χρησιμοποιήστε το όταν δεν χρησιμοποιείτε μεταβλητές που πρέπει να αξιολογήσετε στο σειρά.

3. Χρησιμοποιήστε το sprintf αντί για μεταβλητές που περιέχονται σε διπλά εισαγωγικά, είναι περίπου 10 φορές πιο γρήγορο.

4. Χρησιμοποιήστε τις πολλαπλές παραμέτρους της ηχούς (ή στοιβαγμένες) αντί για τη συνένωση συμβολοσειρών.

5. Χρησιμοποιήστε προ-υπολογισμούς, ορίστε τη μέγιστη τιμή για τους βρόχους for πριν και όχι στον βρόχο. π.χ.: για ($x=0; $x < count($array); $x), αυτό καλεί τη συνάρτηση count() κάθε φορά, χρησιμοποιήστε το $max=count($array) πριν ξεκινήσει ο βρόχος for-loop.

6. Καταργήστε ή μηδενίστε τις μεταβλητές σας ώστε να ελευθερωθεί η μνήμη, ειδικά οι μεγάλοι πίνακες.

7. Αποφύγετε μαγικά όπως __get, __set, __autoload.

8. Χρησιμοποιήστε την require() αντί για την require_once() όπου είναι δυνατόν.

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

10. Η require() και η include() είναι πανομοιότυπες με κάθε τρόπο εκτός από την απαίτηση τερματισμού εάν το αρχείο λείπει. Όσον αφορά τις επιδόσεις, υπάρχει πολύ μικρή διαφορά.

11. Από την PHP5, η ώρα έναρξης εκτέλεσης του σεναρίου μπορεί να βρεθεί στο $_SERVER['REQUEST_TIME'], χρησιμοποιήστε αυτό αντί για time() ή microtime().

12. Το PCRE regex είναι πιο γρήγορο από το EREG, αλλά πάντα να βλέπετε αν μπορείτε να χρησιμοποιήσετε πιο γρήγορες εγγενείς συναρτήσεις όπως strncasecmp, strpbrk και stripos.

13. Κατά την ανάλυση με XML στην PHP, δοκιμάστε το xml2array, το οποίο κάνει χρήση των συναρτήσεων PHP XML, για HTML μπορείτε να δοκιμάσετε το έγγραφο DOM της PHP ή το DOM XML στην PHP4.

14. Το str_replace είναι ταχύτερο από το preg_replace, το str_replace είναι το καλύτερο συνολικά, ωστόσο το strtr είναι μερικές φορές πιο γρήγορο με μεγαλύτερες συμβολοσειρές. Η χρήση του array() μέσα στο str_replace είναι συνήθως πιο γρήγορη από την πολλαπλή str_replace.

15. Οι δηλώσεις "άλλο εάν" είναι πιο γρήγορες από επιλεγμένες δηλώσεις που ονομάζονται περίπτωση/διακόπτης.

16. Η καταστολή σφαλμάτων με το @ είναι πολύ αργή.

17. Για να μειώσετε τη χρήση εύρους ζώνης, ενεργοποιήστε το mod_deflate στο Apache v2 ή για το Apache v1 δοκιμάστε το mod_gzip.

18. Κλείστε τις συνδέσεις της βάσης δεδομένων σας όταν τελειώσετε με αυτές.

19. Το $row['id'] είναι 7 φορές πιο γρήγορο από το $row[id], γιατί αν δεν παρέχετε εισαγωγικά πρέπει να μαντέψει ποιον δείκτη εννοούσατε, υποθέτοντας ότι δεν εννοούσατε σταθερά.

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

21. Χρησιμοποιήστε αυστηρό κώδικα, αποφύγετε την απόκρυψη σφαλμάτων, ειδοποιήσεων και προειδοποιήσεων με αποτέλεσμα καθαρότερο κωδικό και λιγότερα γενικά έξοδα. Σκεφτείτε να έχετε πάντα ενεργοποιημένο το error_reporting(E_ALL).

22. Τα σενάρια PHP εξυπηρετούνται 2-10 φορές πιο αργά από τον Apache httpd από μια στατική σελίδα. Προσπαθήστε να χρησιμοποιήσετε στατικές σελίδες αντί για σενάρια από την πλευρά του διακομιστή.

23. Τα σενάρια PHP (εκτός εάν είναι αποθηκευμένα στην προσωρινή μνήμη) μεταγλωττίζονται αμέσως κάθε φορά που τα καλείτε. Εγκαταστήστε ένα προϊόν προσωρινής αποθήκευσης PHP (όπως memcached ή eAccelerator ή Turck MMCache) για να αυξήσετε συνήθως την απόδοση κατά 25-100% αφαιρώντας τους χρόνους μεταγλώττισης. Μπορείτε ακόμη να ρυθμίσετε το eAccelerator στο cPanel χρησιμοποιώντας το EasyApache3.

24. Μια εναλλακτική τεχνική προσωρινής αποθήκευσης όταν έχετε σελίδες που δεν αλλάζουν πολύ συχνά είναι να αποθηκεύετε προσωρινά την έξοδο HTML των σελίδων σας PHP. Δοκιμάστε το Smarty ή το Cache Lite.

25. Χρησιμοποιήστε το isset όπου είναι δυνατόν σε αντικατάσταση του strlen. (δηλαδή: if (strlen($foo) < 5) { echo "Το Foo είναι πολύ σύντομο"; } εναντίον if (!isset($foo{5})) { echo "Το Foo είναι πολύ σύντομο"; } ).

26. Το ++$i είναι ταχύτερο από το $ i++, γι' αυτό χρησιμοποιήστε προ-αύξηση όπου είναι δυνατόν.

27. Χρησιμοποιήστε τις αμέτρητες προκαθορισμένες λειτουργίες της PHP, μην επιχειρήσετε να δημιουργήσετε τις δικές σας, καθώς οι εγγενείς θα είναι πολύ πιο γρήγορες. Εάν έχετε λειτουργίες που καταναλώνουν πολύ χρόνο και πόρους, σκεφτείτε να τις γράψετε ως επεκτάσεις ή λειτουργικές μονάδες C.

28. Δημιουργήστε προφίλ τον κωδικό σας. Ένας προγραμματιστής προφίλ σάς δείχνει ποια μέρη του κώδικά σας καταναλώνουν πόση ώρα. Το πρόγραμμα εντοπισμού σφαλμάτων Xdebug περιέχει ήδη ένα προφίλτρο. Το προφίλ σάς δείχνει τα σημεία συμφόρησης σε επισκόπηση.

29. Τεκμηριώστε τον κωδικό σας.

30. Μάθετε τη διαφορά μεταξύ καλού και κακού κώδικα.

31. Επιμείνετε στα πρότυπα κωδικοποίησης, θα σας διευκολύνει να κατανοήσετε τον κώδικα άλλων ανθρώπων και οι άλλοι άνθρωποι θα μπορούν να καταλάβουν τον δικό σας.

32. Διαχωρίστε τον κώδικα, το περιεχόμενο και την παρουσίαση: κρατήστε τον κώδικα PHP ξεχωριστά από το HTML σας.

33. Μην ασχολείστε με τη χρήση πολύπλοκων συστημάτων προτύπων όπως το Smarty, χρησιμοποιήστε αυτό που περιλαμβάνεται ήδη στην PHP, δείτε το ob_get_contents και εξαγάγετε και απλώς τραβήξτε τα δεδομένα από τη βάση δεδομένων σας.

34. Μην εμπιστεύεστε ποτέ μεταβλητές που προέρχονται από τη χώρα χρήστη (όπως από $_POST) χρησιμοποιήστε mysql_real_escape_string όταν χρησιμοποιείτε mysql και htmlspecialchars κατά την έξοδο ως HTML.

35. Για λόγους ασφαλείας, μην έχετε ποτέ κάτι που θα μπορούσε να αποκαλύψει πληροφορίες σχετικά με διαδρομές, επεκτάσεις και ρυθμίσεις παραμέτρων, όπως display_errors ή phpinfo() στο webroot σας.

36. Απενεργοποιήστε το register_globals (είναι απενεργοποιημένο από προεπιλογή για κάποιο λόγο!). Κανένα σενάριο σε επίπεδο παραγωγής δεν χρειάζεται να το ενεργοποιήσει, καθώς αποτελεί κίνδυνο ασφάλειας. Διορθώστε τυχόν σενάρια που το απαιτούν ενεργό και διορθώστε τυχόν σενάρια που απαιτούν απενεργοποίηση χρησιμοποιώντας το unregister_globals(). Κάντε αυτό τώρα, καθώς έχει οριστεί να αφαιρεθεί στην PHP6.

37. Αποφύγετε τη χρήση απλού κειμένου κατά την αποθήκευση και την αξιολόγηση κωδικών πρόσβασης για να αποφύγετε την έκθεση, αντί να χρησιμοποιείτε κατακερματισμό, όπως κατακερματισμό md5.

38. Χρησιμοποιήστε τις ip2long() και long2ip() για να αποθηκεύσετε τις διευθύνσεις IP ως ακέραιους αντί για συμβολοσειρές.

39. Μπορείτε να αποφύγετε την επανεφεύρεση του τροχού χρησιμοποιώντας το έργο PEAR, δίνοντάς σας υπάρχοντα κώδικα υψηλού επιπέδου.

40. Όταν χρησιμοποιείτε το header('Location: '.$url); θυμηθείτε να το ακολουθήσετε με ένα die(); καθώς το σενάριο συνεχίζει να εκτελείται ακόμα κι αν η τοποθεσία έχει αλλάξει ή αποφύγετε να το χρησιμοποιήσετε όλο μαζί όπου είναι δυνατόν.

41. Στο OOP, εάν μια μέθοδος μπορεί να είναι στατική μέθοδος, δηλώστε την στατική. Η βελτίωση της ταχύτητας είναι κατά 4..

42. Η αύξηση μιας τοπικής μεταβλητής σε μια μέθοδο OOP είναι η ταχύτερη. Σχεδόν το ίδιο με την κλήση μιας τοπικής μεταβλητής σε μια συνάρτηση και την αύξηση μιας καθολικής μεταβλητής είναι 2 φορές αργή από μια τοπική μεταβλητή.

43. Η αύξηση μιας ιδιότητας αντικειμένου (π.χ. $this->prop++) είναι 3 φορές πιο αργή από μια τοπική μεταβλητή.

44. Η αύξηση μιας απροσδιόριστης τοπικής μεταβλητής είναι 9-10 φορές πιο αργή από μια εκ των προτέρων αρχικοποιημένη.

45. Απλώς η δήλωση μιας καθολικής μεταβλητής χωρίς τη χρήση της σε μια συνάρτηση επιβραδύνει τα πράγματα (περίπου το ίδιο ποσό με την αύξηση ενός τοπικού var). Η PHP πιθανώς κάνει έναν έλεγχο για να δει αν υπάρχει το παγκόσμιο.

46. ​​Η επίκληση της μεθόδου φαίνεται να είναι ανεξάρτητη από τον αριθμό των μεθόδων που ορίζονται στην κλάση, επειδή πρόσθεσα 10 ακόμη μεθόδους στην κλάση δοκιμής (πριν και μετά τη μέθοδο δοκιμής) χωρίς αλλαγή στην απόδοση.

47. Οι μέθοδοι σε παράγωγες κλάσεις τρέχουν πιο γρήγορα από αυτές που ορίζονται στη βασική κλάση.

48. Μια κλήση συνάρτησης με μία παράμετρο και ένα κενό σώμα συνάρτησης διαρκεί περίπου τον ίδιο χρόνο με την εκτέλεση 7-8 πράξεων $localvar++. Μια παρόμοια κλήση μεθόδου είναι φυσικά περίπου 15 $localvar++ πράξεις.

49. Δεν χρειάζεται να είναι όλα OOP, συχνά είναι απλώς γενικά, κάθε κλήση μεθόδου και αντικειμένου καταναλώνει πολλή μνήμη.

50. Μην εμπιστεύεστε ποτέ τα δεδομένα χρήστη, αποφύγετε τις συμβολοσειρές σας που χρησιμοποιείτε σε ερωτήματα SQL χρησιμοποιώντας mysql_real_escape_string, αντί για mysql_escape_string ή πρόσθετες κάθετες. Σημειώστε επίσης ότι εάν το magic_quotes_gpc είναι ενεργοποιημένο, θα πρέπει πρώτα να χρησιμοποιήσετε stripslashes.

51. Αποφύγετε το ζήτημα της έγχυσης της κεφαλίδας της συνάρτησης PHP mail().

52. Καταργήστε τη ρύθμιση των μεταβλητών της βάσης δεδομένων σας (τουλάχιστον τον κωδικό πρόσβασης), δεν θα πρέπει να τον χρειαστείτε αφού πραγματοποιήσετε τη σύνδεση της βάσης δεδομένων.

53. RTFM! Η PHP προσφέρει ένα φανταστικό εγχειρίδιο, πιθανότατα ένα από τα καλύτερα που υπάρχουν, κάτι που την κάνει πολύ πρακτική γλώσσα, παρέχοντας παραδείγματα εργασίας και μιλώντας σε απλά αγγλικά.

Αυτά είναι μερικά από τα κόλπα και τις συμβουλές PHP που μπορεί να είναι πολύ χρήσιμα για όσους μόλις άρχισαν να μαθαίνουν τη γλώσσα PHP, αλλά και για όσους αναπτύσσονται από καιρό. Ωστόσο, το RTFM είναι ο πιο αποτελεσματικός τρόπος εκμάθησης της PHP.

Aishwar Babber

Ο Aishwar Babber είναι ένας παθιασμένος blogger και ένας ψηφιακός έμπορος. Του αρέσει να μιλάει και να κάνει blog για την πιο πρόσφατη τεχνολογία και gadget, κάτι που τον παρακινεί να τρέξει GizmoBase. Αυτήν τη στιγμή εξασκεί την τεχνογνωσία του στο ψηφιακό μάρκετινγκ, το SEO και το SMO ως έμπορος πλήρους απασχόλησης σε διάφορα έργα. Είναι ενεργός επενδυτής σε AffiliateBay και σκηνοθέτης στο ImageStation.

22 σκέψεις σχετικά με “50+ κόλπα PHP και συμβουλές για αρχάριους και προγραμματιστές”

  1. Καταπληκτική ανάρτηση, αυτές οι συμβουλές και τα κόλπα php βοηθούν πολύ σε όλους τους νέους προγραμματιστές php και από αυτό, πήρα επίσης μερικές συμβουλές και κόλπα php που δεν γνωρίζω καθόλου.

    απάντηση
  2. Υπέροχες συμβουλές, αλλά νομίζω ότι πρέπει να αλλάξετε το σημείο 37. Ένας απλός κατακερματισμός md5 δεν είναι πραγματικά αρκετά περίπλοκος στον κόσμο που ζούμε.

    απάντηση
  3. αρ. 15
    αν/άλλο είναι πιο γρήγορο από το διακόπτη, έχετε δίκιο, έκανα μερικές δοκιμές,
    αλλά θα πρέπει να σκεφτείτε σε ποια περίπτωση να χρησιμοποιήσετε το διακόπτη.

    Το κυκλοφόρησα, δοκιμάζοντας 10,1000,100000 και 1 εκατομμύριο κύκλους και το αποτέλεσμα είναι:
    σε 100k κύκλους λαμβάνετε διαφορά 0,13 δευτ. σε τοπικό μηχάνημα (σε εξωτερικό διακομιστή, θα πρέπει να έχετε λιγότερη διαφορά).

    Επομένως, θα πρέπει να εξετάσετε το ενδεχόμενο χρήσης if/else του διακόπτη. Προτιμώ να χρησιμοποιώ διακόπτη λόγω καθαρότερου κώδικα. Χρησιμοποιώντας 1 διακόπτη, 2 διακόπτες, ακόμη και 100 διακόπτες αντί για if/else… δεν πειράζει, δεν έχει νόημα.

    απάντηση
  4. αρ. 26
    κάνω τεστ τώρα,
    με $i++ και ++$i

    Είναι απλό – ο αριθμός 26 δεν έχει νόημα μέχρι να θελήσετε να χρησιμοποιήσετε περισσότερα από 10 mil. κύκλους.
    Και διαφορά;

    Κύκλοι 10 mil με $i++ 2.67448 δευτ
    Κύκλοι 10 mil με ++$i 2.605528 s

    απάντηση
  5. 24. (…) Δοκιμάστε το Smarty ή το Cache Lite.
    33. Μην ασχολείστε με τη χρήση πολύπλοκων συστημάτων προτύπων όπως το Smarty

    ok.

    (προσωπικά θα έσβηνα απλώς το #33, το smarty (ή άλλα συστήματα προτύπων) έχει πολλά πλεονεκτήματα σε σύγκριση με τις λειτουργίες ob_…)

    απάντηση
  6. Το Echo είναι ταχύτερο από την εκτύπωση με έναν κωδικό λειτουργίας, επομένως δεν έχει σημασία, πραγματικά. Και η print() είναι συνάρτηση, η echo όχι. Δοκιμάστε αυτό:

    $variable και εκτυπώστε το 'variable is set!';

    Και για την αύξηση: $i += 1; είναι το πιο γρήγορο.

    Υπέροχο άρθρο, ευχαριστώ!

    απάντηση
  7. Αυτή είναι μια ωραία συλλογή από μερικά κόλπα κώδικα PHP. Είναι σημαντικό ένας προγραμματιστής να εξετάζει επίσης την απόδοση του κώδικα που αναπτύσσει. Ευχαριστώ που το μοιράστηκες.

    απάντηση
  8. Γεια σας, το υπέροχο περιεχόμενό του και η php είναι πολύ δροσερή γλώσσα, σίγουρα θα ακολουθήσω αυτά τα κόλπα, λόγω των χαρακτηριστικών του είναι πολύ εύκολο να το κατανοήσετε και να το μάθετε.

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

    απάντηση

Αφήστε ένα σχόλιο