50+ PHP triki un padomi iesācējiem un izstrādātājiem

PHP ir visnoderīgākā valoda emuāru un vietņu veidošanā, tai ir daudz funkciju, kuras var izmantot, lai iegūtu vēl vairāk pielāgotu funkciju. Mēs esam apkopojuši visnoderīgākos PHP triki un padomi iesācējiem un pat izstrādātājiem. Šie PHP triki padara jūsu kodēšanu produktīvāku un efektīvāku.

50+ PHP triki un padomi iesācējiem

PHP triku un padomu saraksts

1. atbalss ir ātrāka nekā drukāt.

2. Aptiniet savu virkni vienpēdiņās ('), nevis dubultpēdiņās () ir ātrākas, jo PHP meklē mainīgos iekšā "...", nevis "...". izmantojiet šo, ja neizmantojat mainīgos, kas ir jānovērtē virkne.

3. Izmantojiet sprintf, nevis mainīgos, kas ietverti dubultpēdiņās, tas ir aptuveni 10 reizes ātrāks.

4. Izmantojiet echo vairākus parametrus (vai stacked), nevis virknes savienošanu.

5. Izmantojiet iepriekšējus aprēķinus, iestatiet maksimālo vērtību for-cilpām pirms, nevis cilpas. ti: ja ($x=0; $x < count($masīvs); $x), tas katru reizi izsauc funkciju count(), tā vietā izmantojiet $max=count($masīvs), pirms tiek sākta for-cilpa.

6. Atceliet vai atiestatiet mainīgos lielumus, lai atbrīvotu atmiņu, īpaši lielus masīvus.

7. Izvairieties no maģijas, piemēram, __get, __set, __autoload.

8. Ja iespējams, izmantojiet request() vietā request_once().

9. Izmantojiet pilnus ceļus, kas ietver un prasa, mazāk laika, kas pavadīts OS ceļu atrisināšanai.

10. prasīt() un include() ir identiski visos veidos, izņemot pieprasīt apturēšanu, ja fails trūkst. Veiktspējas ziņā atšķirība ir ļoti maza.

11. Kopš PHP5 skripta izpildes sākuma laiku var atrast $_SERVER['REQUEST_TIME'], izmantojiet to time() vai microtime() vietā.

12. PCRE regex ir ātrāks nekā EREG, taču vienmēr pārbaudiet, vai tā vietā varat izmantot ātrākas vietējās funkcijas, piemēram, strncasecmp, strpbrk un stripos.

13. Parsējot ar XML PHP, izmēģiniet xml2array, kas izmanto PHP XML funkcijas, HTML varat izmēģināt PHP DOM dokumentu vai DOM XML PHP4.

14. str_replace ir ātrāks par preg_replace, str_replace ir labākais kopumā, tomēr strtr dažreiz ir ātrāks ar lielākām virknēm. Ary() izmantošana iekšā str_replace parasti ir ātrāka nekā vairāku str_replace.

15. Izteikumi “else if” ir ātrāki par atlasītajiem priekšrakstiem aka case/switch.

16. Kļūdu apspiešana ar @ ir ļoti lēna.

17. Lai samazinātu joslas platuma lietojumu, ieslēdziet mod_deflate Apache v2 vai Apache v1 izmēģiniet mod_gzip.

18. Aizveriet datu bāzes savienojumus, kad esat tos pabeidzis.

19. $row['id'] ir 7 reizes ātrāks par $row[id], jo, ja jūs nesniedzat pēdiņas, tai ir jāuzmin, kuru indeksu jūs domājāt, pieņemot, ka jūs nedomājāt konstanti.

20. Izmantošana tagus, deklarējot PHP, jo visi pārējie stili tiek nolietoti, ieskaitot īsos tagus.

21. Lietojiet stingru kodu, izvairieties no kļūdu, paziņojumu un brīdinājumu novēršanas, tādējādi radot tīrāku kodu un mazāk pieskaitāmu izdevumu. Apsveriet iespēju vienmēr ieslēgt kļūdu_ziņošanu (E_ALL).

22. Apache httpd PHP skriptus apkalpo 2-10 reizes lēnāk nekā statisku lapu. Centieties izmantot statiskas lapas, nevis servera puses skriptus.

23. PHP skripti (ja vien tie nav kešatmiņā) tiek apkopoti lidojuma laikā katru reizi, kad tos izsaucat. Instalējiet PHP kešatmiņas produktu (piemēram, memcached vai eAccelerator vai Turck MMCache), lai parasti palielinātu veiktspēju par 25–100%, noņemot kompilēšanas laikus. Varat pat iestatīt eAccelerator programmā cPanel, izmantojot EasyApache3.

24. Alternatīvs kešatmiņas paņēmiens, ja jums ir lapas, kas nemainās pārāk bieži, ir jūsu PHP lapu HTML izvades saglabāšana kešatmiņā. Izmēģiniet Smarty vai Cache Lite.

25. Ja iespējams, strlen vietā izmantojiet isset. (ti: if (strlen($foo) < 5) { echo “Foo ir pārāk īss”; } pret if (!isset($foo{5})) { echo “Foo ir pārāk īss”; } ).

26. ++$i ir ātrāks par $ i++, tāpēc, ja iespējams, izmantojiet iepriekšēju palielinājumu.

27. Izmantojiet neskaitāmās PHP iepriekš definētās funkcijas, nemēģiniet izveidot savu, jo vietējās funkcijas būs daudz ātrākas; ja jums ir ļoti daudz laika un resursus patērējošas funkcijas, apsveriet iespēju tās rakstīt kā C paplašinājumus vai moduļus.

28. Profilējiet savu kodu. Profilētājs parāda, kuras jūsu koda daļas patērē un cik daudz laika. Xdebug atkļūdotājs jau satur profilētāju. Profilēšana pārskatā parāda vājās vietas.

29. Dokumentējiet savu kodu.

30. Uzziniet atšķirību starp labo un sliktu kodu.

31. Pieturieties pie kodēšanas standartiem, tā jums būs vieglāk saprast citu cilvēku kodu un citi varēs saprast jūsējo.

32. Atdaliet kodu, saturu un prezentāciju: turiet savu PHP kodu atsevišķi no HTML.

33. Neuztraucieties, izmantojot sarežģītas veidņu sistēmas, piemēram, Smarty, izmantojiet to, kas jau ir iekļauts PHP, skatiet ob_get_contents un ekstrakts, un vienkārši izvelciet datus no savas datu bāzes.

34. Nekad neuzticieties mainīgajiem, kas nāk no lietotāja zemes (piemēram, no $_POST), izmantojiet mysql_real_escape_string, kad lietojat mysql, un htmlspecialchars, izvadot kā HTML.

35. Drošības apsvērumu dēļ jūsu tīmekļa saknē nekad nav nekā, kas varētu atklāt informāciju par ceļiem, paplašinājumiem un konfigurāciju, piemēram, display_errors vai phpinfo().

36. Izslēdziet register_globals (kā iemesla dēļ tas pēc noklusējuma ir atspējots!). Nevienam skriptam ražošanas līmenī tas nav jāiespējo, jo tas rada drošības risku. Labojiet visus skriptus, kuriem tas ir nepieciešams, un izlabojiet visus skriptus, kuriem tas ir nepieciešams, izmantojot unregister_globals(). Dariet to tagad, jo PHP6 ir iestatīts tā noņemšanai.

37. Izvairieties no vienkārša teksta izmantošanas, glabājot un novērtējot paroles, lai izvairītos no ekspozīcijas, tā vietā izmantojiet jaucējkodu, piemēram, md5 hash.

38. Izmantojiet ip2long() un long2ip(), lai saglabātu IP adreses kā veselus skaitļus, nevis virknes.

39. Jūs varat izvairīties no riteņa izgudrošanas no jauna, izmantojot PEAR projektu, nodrošinot jums esošo augsta līmeņa kodu.

40. Izmantojot header('Atrašanās vieta: '.$url); atcerieties sekot tam ar kauliņu(); jo skripts turpina darboties, pat ja atrašanās vieta ir mainījusies, vai izvairieties to izmantot kopā, ja iespējams.

41. OOP, ja metode var būt statiska metode, pasludiniet to par statisku. Ātruma palielinājums ir 4 reizes...

42. Vietējā mainīgā palielināšana OOP metodē ir visātrākā. Gandrīz tas pats, kas vietējā mainīgā izsaukšana funkcijā un globālā mainīgā palielināšana ir 2 reizes lēnāka nekā lokālajam mainīgajam.

43. Objekta rekvizīta palielināšana (piem., $this->prop++) ir 3 reizes lēnāka nekā lokālajam mainīgajam.

44. Nedefinēta lokālā mainīgā palielināšana ir 9–10 reizes lēnāka nekā iepriekš inicializēta.

45. Tikai globālā mainīgā deklarēšana, neizmantojot to funkcijā, darbība palēninās (apmēram par tādu pašu summu kā lokālā mainīgā palielināšana). PHP, iespējams, pārbauda, ​​vai globālais eksistē.

46. ​​Šķiet, ka metodes izsaukšana nav atkarīga no klasē definēto metožu skaita, jo es pievienoju testa klasei vēl 10 metodes (pirms un pēc testa metodes), nemainoties veiktspējai.

47. Metodes atvasinātajās klasēs darbojas ātrāk nekā bāzes klasē definētās.

48. Funkcijas izsaukšana ar vienu parametru un tukšu funkcijas pamattekstu aizņem apmēram tikpat ilgu laiku kā 7-8 $localvar++ operāciju veikšana. Līdzīgas metodes izsaukums, protams, ir aptuveni 15 $localvar++ operācijas.

49. Ne visam ir jābūt OOP, bieži vien tas ir tikai virs galvas, katrs metodes un objekta izsaukums patērē daudz atmiņas.

50. Nekad neuzticieties lietotāja datiem, izvairieties no virknēm, kuras izmantojat SQL vaicājumos, izmantojot mysql_real_escape_string, nevis mysql_escape_string vai addslashes. Ņemiet vērā arī to, ka, ja ir iespējots magic_quotes_gpc, vispirms ir jāizmanto svītras.

51. Izvairieties no PHP mail() funkcijas galvenes injekcijas problēmas.

52. Atiestatiet datu bāzes mainīgos (vismaz paroli), pēc datu bāzes savienojuma izveides jums tas nav vajadzīgs.

53. RTFM! PHP piedāvā fantastisku rokasgrāmatu, kas, iespējams, ir viena no labākajām, kas padara to par ļoti praktisku valodu, sniedzot darba piemērus un runājot vienkāršā angļu valodā.

Šie ir daži no PHP trikiem un padomiem, kas var būt ļoti noderīgi tiem, kas tikko sākuši mācīties PHP valodu, kā arī tiem, kuri attīstās jau labu laiku. Tomēr RTFM ir visefektīvākais PHP apguves veids.

Aišvars Babbers

Aišvars Babbers ir kaislīgs emuāru autors un digitālā mārketinga speciālists. Viņam patīk runāt un emuārēt par jaunākajām tehnoloģijām un sīkrīkiem, kas viņu motivē skriet GizmoBase. Pašlaik viņš praktizē digitālā mārketinga, SEO un SMO zināšanas kā pilna laika mārketinga speciālists dažādos projektos. Viņš ir aktīvs investors AffiliateBay un ImageStation direktors.

22 domas par tēmu “50+ PHP triki un padomi iesācējiem un izstrādātājiem”

  1. Lieliski padomi, bet es domāju, ka jums vajadzētu mainīt 37. punktu. Vienkāršs md5 hash patiesībā nav pietiekami izsmalcināts pasaulē, kurā mēs dzīvojam.

    atbildēt
  2. nr. 15
    ja/cits ir ātrāks par slēgšanu, jums ir taisnība, es veicu dažus testus,
    bet jums vajadzētu apsvērt, kādā gadījumā izmantot slēdzi.

    Esmu to izbraucis, pārbaudot 10,1000,100000 1 XNUMX XNUMX un XNUMX miljonu ciklu, un rezultāts ir:
    100 0,13 ciklos jūs saņemat XNUMX s atšķirību vietējā mašīnā (ārējā serverī jums vajadzētu iegūt mazāku atšķirību).

    Tāpēc jums vajadzētu apsvērt slēdža if/else izmantošanu. Es dodu priekšroku slēdzim tīrāka koda dēļ. Izmantojot 1 slēdzi, 2 slēdžus, pat 100 slēdžus, nevis if/else … tam nav nozīmes, tas ir bezjēdzīgi.

    atbildēt
  3. nr. 26
    es tagad izpildu testu,
    ar $i++ un ++$i

    tas ir vienkārši — skaitlim 26 nav nozīmes, kamēr nevēlaties izmantot vairāk nekā 10 milj. cikli.
    Un atšķirība?

    10mil cikli ar $i++ 2.67448 s
    10mil cikli ar ++$i 2.605528 s

    atbildēt
  4. 24. (…) Izmēģiniet Smarty vai Cache Lite.
    33. Neuztraucieties, izmantojot sarežģītas veidņu sistēmas, piemēram, Smarty

    ok.

    (Es personīgi vienkārši dzēstu #33; smarty (vai citām veidņu sistēmām) ir daudz priekšrocību, salīdzinot ar ob_ funkcijām...)

    atbildēt
  5. Atbalss ir ātrāka nekā drukāšana ar vienu opkodu, tāpēc tam tiešām nav nozīmes. Un print() ir funkcija, echo nav. Izmēģiniet šo:

    $mainīgs un izdrukāt 'mainīgais ir iestatīts!';

    Un par palielināšanu: $i += 1; ir ātrākais.

    Lielisks raksts, paldies!

    atbildēt
  6. Lielisks raksts, paldies par kopīgošanu
    Lieliski padomi, bet es domāju, ka jums vajadzētu mainīt 37. punktu. Vienkāršs md5 hash patiesībā nav pietiekami izsmalcināts pasaulē, kurā mēs dzīvojam.

    atbildēt

Leave a Comment