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.
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.
Tas patiešām ir noderīgi, ja sākat kā iesācējs.
Lieliski padomi.. Paldies!
Atzīmēts!!!!
Lielisks ieraksts, šie php padomi un triki ļoti palīdz visiem jaunajiem php izstrādātājiem, un no tā es arī saņēmu dažus php padomus un trikus, kurus es līdz šim nezinu.
Prieks, jums patika ieraksts.
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.
Jā, es zinu, bet privātums ir privātums.
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.
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
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...)
Ievērojami padomi. Paldies vecīt, palīdziet manā programmēšanas darbā.
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!
Lieliski padomi. Liels paldies par kopīgošanu. Pievienots grāmatzīmēm un kopīgots 🙂
Vai ir iespējams sanitizēt datus, neizmantojot magic_quotes_gpc?.
Tas ir jauks dažu PHP koda triku kopsavilkums. Izstrādātājam ir svarīgi ņemt vērā arī izstrādātā koda veiktspēju. Paldies par dalīšanos.
Paldies, šie padomi man ir lieliski, jo esmu PHP iesācējs.
Sveiki, tā lieliskais saturs un php ir ļoti forša valoda, es noteikti sekošu šiem trikiem, jo tā funkciju dēļ tas ir ļoti viegli saprotams un apgūstams.
Jūs patiešām paveicāt lielisku darbu, ievietojot šos interesantos php trikus, kas ir ļoti noderīgi.
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.
Esmu jūsu vietnes sekotājs jau ilgu laiku, paldies.
Pirms atbalss izmantošanas apvienojiet savu virkni. Echo palēninās jūsu vietnes darbību.
Lielisks informācijas cilvēks.
Lielisks ieraksts! Jūs veicat labu darbu. Paldies par jauko kopīgošanu. Paldies.
Pārsteidzoši 50 PHP padomi, jā, man tiešām palīdz, jo esmu iesācējs šajā jomā. Liels paldies par dalīšanos.