A top 10 leggyakrabban használt PHP szolgáltatás

Nál nél Ecce Media , a PHP-t a mindennapi kódolási szertartásunk részeként használjuk. Mindannyian szeretünk sok nyílt forráskódú keretet és kódrészletet használni életünk megkönnyítése érdekében. Fontosnak tartjuk azonban azt is, hogy minden fejlesztő teljes mértékben megértse a PHP alapvető funkcióit, osztályait és módszereit. Ezek ismerete nélkül hogyan kezdhetnéd megérteni, hogy az összes keretrendszer hogyan működik?

Összegyűjtöttük a napi 10 legfontosabb natív funkciónk, osztályunk és szolgáltatásunk válogatását. Közvetlenül tudjuk, mennyire felbecsülhetetlenek ezek a funkciók, ezért reméljük, hogy hasznosnak találja őket is.

1. OEM-osztály

A PDO-t (PHP Data Object) kizárólag a MySQL adatbázisunkhoz való csatlakozáshoz használjuk. A PDO szép absztrakciós réteget biztosít olyan adatbázis-illesztőprogramok körül, mint a MySQL, a PostgreSQL és az MS SQL. Ez azt jelenti, hogy akármelyik adatbázist is használja, mindaddig, amíg a PDO támogatja, ugyanazokat a funkciókat használhatja ugyanazon műveletek végrehajtására az adatbázisban. Ez a kódot hordozhatóbbá teszi, hogy webalkalmazása számos adatbázisban használható legyen, különösebb fejlesztési idő nélkül.



A PDO osztály számos szabványosított funkciót kínál, például tranzakciók létrehozását, előkészített utasítások létrehozását és lehetővé teszi, hogy szükség esetén elkerülje a változókat. A megfelelő módon használva az OEM védheti webalkalmazását az SQL injekciós támadásoktól.

Az OEM-osztály közvetlenül használható, de szeretnénk a saját rétegünket használni a tetején, hogy jobban ellenőrizhessük az olyan dolgokat, mint az adatbevitel formázása és érvényesítése, amelyet az OEM-osztály nem biztosít. A RedBeanPHP ORM egy jó nyílt forráskódú megoldás, amely néhány szép funkcionalitást kínál, amely az OEM fölé épül.

Az alábbi példa bemutatja a kapcsolatot egy MySQL adatbázissal, amely a gyümölcs táblázat minden sorából kiválasztja a nevet, a színt és a kalóriát. Az előkészített utasítás használatával a PDO átalakítja a helyőrzőket az execute függvényben elemzett tömbhöz. Az elkészített utasítás használatával az összes értéket elkerüljük, hogy megvédjük az SQL injekciótól. Az egész kóddarab hozzáadódott egy try blokkhoz, amely felhasználható bármilyen kivétel elkapására.

150, ':colour' => 'red')); /* Get the returned Data */ $dataSet = $sth->fetchAll(); /* Print Results */ print_r($dataSet);}catch (PDOException $e){ echo 'PDO Error: '.$e->getMessage();}catch(Exception $e){ echo 'A Unknown Error Occurred: '.$e->getMessage();}

2. json_encode & json_decode

A PHP5.2 bevezetésével két nagyon hasznos funkció jött létre, amelyek lehetővé teszik a JSON (JavaScript Object Notation) karakterláncok elemzését. A JSON egy szöveges szabvány, amelyet általában egyszerű felépítésű adatok küldésére és fogadására használnak, amelyet úgy terveztek, hogy a számítógép és az ember is könnyen olvasható legyen.

A PHP két olyan funkciót kínál, amelyek lehetővé teszik az adatok manipulálását mind a JSON-ba, mind onnan. json_encode felhasználható az első argumentum adatként történő beállításával. Legyen szó egyszerű karakterláncról vagy többdimenziós tömbről, a PHP megpróbálja visszaadni az adatok egy karaktersorozatát, amelyet átalakítottak JSON-formátumú stringekké. Ez a karakterlánc ezután felhasználható API-n történő kimenetre, vagy beilleszthető a HTML-sablonba, amelyet a kezelőfelületen lévő JavaScript-kód olvashat.

Van néhány figyelmeztetés a használatra json_encode . Például csak az alapvető adattípusok használhatók. A karakterláncok, a számok és a Boole-ok a fő típusok, az asszociatív és a nem asszociatív tömbök mellett. A PHP megpróbálja átalakítani az osztályobjektumokat is, de csak a nyilvános tulajdonságokat kódolja. Az UTF8 kódolja a kapott JSON karakterláncot is.

Az alábbi példa egy olyan állatok tömbjét mutatja, amelyeket JSON karakterláncokká alakítanak át, majd elküldik a felhasználónak. Meghívhatja ezt a szkriptet egy Ajax kérésből egy JavaScript keretrendszeren keresztül, amely azután készen áll arra, hogy egy JavaScript objektum készen álljon az ismétlésre.

'cat','name'=>'Alfie','age'=>2), array('type'=>'dog','name'=>'Bella','age'=>6));/* Encode to JSON */$jsonString = json_encode($myArray);echo $jsonString;

json_decode ellentéte json_encode . A függvény első argumentumként a JSON karakterláncot veszi fel, és megpróbálja a karakterláncot PHP változóvá elemezni. Van egy opcionális második argumentum a karakterlánc objektummá vagy asszociatív tömbsé alakítására. Az ‘igaz’ elemzésével második argumentumként (az alábbiak szerint) visszaadhat egy tömböt.

A JSON használatának előnye az XML-mel szemben az egyszerűsége; csak néhány adattípussal a PHP nagyon egyszerűvé teszi az egyszerű adatok elemzését. A JSON lehet, hogy az esetek többségében nem olyan gyors, mint az XML elemzése, de json_decode közvetlen hozzáférést biztosít az adatokhoz tömb vagy objektum formátumban. Ez eltér az simpleXML-től, amely egy simpleXML objektumot ad vissza, amelyet aztán tovább kell dolgoznia az adatokhoz való hozzáféréshez. Következésképpen , json_decode ugyanolyan gyorsnak tekinthető.

3. DateTime osztály

A Dátum idő osztály lehetővé teszi az idő és a dátum objektívebb kezelését, ami lehetetlen a standard alapfunkciók, például mktime és strtotime . A DateInterval és DateTimeZone osztályokban képesek vagyunk olyan szabványos funkciókat végrehajtani, mint az időintervallumok összeadása vagy kivonása egy dátumon, vagy az aktuális időzóna módosítása. A Dátum idő osztály is bővíthető, így extra funkciókat tudunk biztosítani, miközben a kód tisztább és könnyebben olvasható.

Fontos ok a Dátum idő osztály az, hogy az összes dátumot 64 bites egész számként tárolja, amely megoldást kínál a 32 bites 2038 hibára, ahol a dátumok leállnak, és ez tovább nő.

Az alábbi kódpélda bemutatja, hogy a Dátum idő A Class felhasználható arra, hogy egy napot hozzáadjon az aktuális szerveridőhöz, majd az időzónát átalakítsa UTC-re.

format('Y-m-d H:i:s');/* Add 1 Day */$date->add(new DateInterval('P1D'));echo '
'.$date->format('Y-m-d H:i:s');/* Change Timezone to UTC */$date->setTimezone(new DateTimeZone('etc/UTC'));echo '
'.$date->format('Y-m-d H:i:s');

4. Kivételek

A PHP5-tel együtt jöttek a kivételek. A többi programozási nyelvhez hasonlóan, mint a Java és a C #, a kivételeket használják olyan hibák „dobására”, amelyeket bármikor elkaphatunk, ha kibuggyanunk a kódkötegben. Kivételt könnyen létrehozhat a dobás kulcsszó után egy Kivétel tárgy.

A kivételek befogása a tesztelni kívánt kód becsomagolásával valósul meg próbáld blokkolni . Ezután létre kell hoznia a fogási blokk minden olyan kivételt „elkapni”, amelyet a try blokk kódja dob.

A PHP tolmács a szokásos módon megpróbálja elemezni a blokk mindent. Ha nem vetnek ki kivételt, akkor az tolmács folytatja a forgatókönyvet, figyelmen kívül hagyva a fogási blokkban foglaltakat. Ha azonban kivételt dobunk, a try blokk többi részét figyelmen kívül hagyjuk, és mindent végrehajtunk a fogási blokk .

A kivételek szépsége, hogy kibővíthetők, mivel csak osztályok. A szabvány kiterjesztésével Kivétel osztályban extra funkciókat adhat a kivételének. A meghosszabbítás másik előnye Kivételek az, hogy lehetővé teszi több elkapási blokk használatát, amelyek a típustippelés használatával hivatkozhatnak az egyes kivételosztályokra.

A PHP5.5 használatával most egy harmadik blokkot kapunk végül . Ezen a területen minden kód futtatásra kerül, függetlenül attól, hogy van-e kivétel vagy sem.

Az OEM példához hasonlóan az alábbi példát egy try blokk tartalmazza. Ha a szkript valamilyen oknál fogva nem tud csatlakozni, akkor ezt rögzíthetjük egy fogási blokk bevezetésével a PDOExceptions vagy Exceptions rögzítésére. Az alábbi esetben az esetleges hibákat kinyomtatják a képernyőre, és a szkriptet továbbra is a végéig hajtják végre.

getMessage();}catch(Exception $e){ echo 'A Unknown Error Occurred: '.$e->getMessage();}echo 'I am still parsed, even if there was an error';

5. Névterek

A névterek előtti időkben a PHP minden változót, függvényt és osztályt a globális névtér alá helyezett. Ez korlátozta a fejlesztőket annak biztosítására, hogy alkalmazásaiknak csak egyedi funkcióik és osztályneveik legyenek. A fejlesztők körbejárták ezt a kérdést az osztály- és függvénynevek előtagozásával, hogy a névterek álhatását biztosítsák, de ezzel az volt a probléma, hogy az osztálynevek hatalmasak lehetnek, ami néha nehézzé teszi őket az intelligens IDE használata nélkül. .

Szerencsére a névterek bevezetésével ez a probléma megoldódott. A névtér kulcsszó, amelyet a PHP fájl tetején lévő névtér név követ, az összes alábbi kódot abba a reflektív névtérbe helyezi, amelyhez más névtér nem férhet hozzá, hacsak kifejezetten nem utasítja erre. A névterek használatával most jól felépített és olvasható kódot tudunk létrehozni, amelyet könnyebben olvashatunk és kezelhetünk.

Az alábbi példa bemutatja, hogyan tudjuk megvalósítani saját myNamespace névterünket, és létrehozhatunk egy új DateTime osztályt, amely teljesen független a globális névtérben biztosított szabványtól. Nevezetesen, továbbra is használhatjuk az alapértelmezett szabványos DateTime osztályt a névtérben azzal, hogy egy új példány létrehozásakor visszahúzót adunk a név elé.

customMethod();/* We can still create the default DateTime object */$standardDate = new DateTime();echo $standardDate->format('Y-m-d H:i:s');

6. Usort

usort lehetővé teszi a fejlesztő számára a tömb rendezését a fejlesztő által konfigurálható összehasonlító függvény alapján. Ez lehetővé teszi bonyolultabb rendezési algoritmusok létrehozását, amelyeket nem a standard magtömb rendezési funkciók biztosítanak.

A visszahívás / bezárás A függvénynek két paramétere van, amelyek két elem a tömbben, amelyet rendezni kért. Ekkor döntheti el, hogy az első argumentum nagyobb, kisebb vagy egyenlő-e a második argumentummal. Ez egész szám visszatérésével történik. Bármi, ami kisebb, mint nulla, feltételezi, hogy az első argumentum kisebb, mint a második. A nulla azt jelenti, hogy az érvek egyenlőek. A nullánál nagyobb azt jelenti, hogy az első argumentum nagyobb, mint a második.

Egy nagyszerű alkalmazás usort amelyet általában napi rendszerességgel használunk, egy egyszerű többdimenziós tömb rendezése. Tegyük fel például, hogy van egy diáktömbünk, amely a név és az élet asszociatív tömbjéből áll. A usort funkcióval együtt a visszahívás / bezárás funkcióval képesek vagyunk kiválasztani az életkort és növekvő vagy csökkenő sorrendbe állítani.

Például az alábbi kód az életkor változója szerint rendezi az egyes diákok tömbjének minden diákját. A visszahívás / bezárás funkció biztosítja az algoritmust, amely összehasonlítja a két korosztályt, és eldönti, hogy az első kor nagyobb-e a másodiknál.

7. Hashing API

Nem is olyan régen volt egy probléma azzal, hogy a nagy nevű webhelyeket feltörték és a nem biztonságos hash jelszavakat ellopták. A napokban az MD5 funkció használata elegendő volt a jelszó kivonatolásához, tehát biztonságos volt. Az MD5 és az SHA1 problémája az, hogy gyorsan végrehajtják a hash algoritmust. A gyorsabb processzorok feltalálásával és a GPU-k használatával együtt az emberek képesek másodpercenként sok százezer hash feldolgozására, akár egy szabványos asztali számítógépen vagy laptopon is.

A PHP5.5-ben bevezetett új hash API egy könnyen használható réteget biztosít a tetején bcrypt biztonságos (egyelőre) hash-ek létrehozására, amelyeket a hackerek sokkal nehezebben oldanak meg. Az alábbi példa bemutatja, hogyan lehet bármilyen karakterlánc-változót kivonatolni. A só automatikusan létrejön, és a hash útvonal költsége 15 lesz. A költség biztonságosabbá, de lassabban elvégezhetővé teszi a hasítást.

20]);

8. SimpleXML osztály

Amikor XML fájlokkal kell megküzdenünk, hajlamosak vagyunk a SimpleXML osztály. Ez a könnyen használható osztály lehetővé teszi az XML fájlok objektumokon keresztüli olvasását és szerkesztését. Ezeknek az objektumoknak a használata lehetővé teszi az értékek visszaadását és a tömbökön történő ismétlést a szokásos módon, valamint egyszerű módszereket tartalmaz az XML szerkezetének módosítására. Ha csak meg kell ragadnia valami konkrétat az XML-ben, akkor a XPath , akkor visszaadhat egy sor készletet SimpleXML Elementobjektumok csak a megadott útvonalhoz.

Az XML olvasása mellett SimpleXML emellett ismerteti az új dokumentumok létrehozásának és / vagy az elemek visszavezetésének módját az importált XML-be. Ezután mindez menthető néhány kódsorba.

A SimpleXML osztály a PHP szabványos kiterjesztése. Bár ez nem a PHP magjában található, alapértelmezés szerint engedélyezve van.

Az alábbi példa nagyon egyszerű példát mutat be a nyilvános fotók listájának megszerzéséhez a Flickr-től, és az egyes fotók tartalmi html-jének megjelenítéséhez.

entry as $photo) echo $photo->content;}

9. glob

A földgolyó függvény egyszerű, egy vonalas megoldást kínál az elérési utak tömbjének létrehozására a megadott minta alapján. földgolyó lehet, hogy nem olyan gyors, mint a opendir és readdir kombinációval, de ha csak egy könyvtárat szeretnél iterálni, vagy egy adott fájltípust keresel, például képet, akkor a glob használata jó megoldás lehet a problémádra.

Az első argumentum egy glob mintasztring, amely működésében hasonlít egy reguláris kifejezéshez, de a minta létrehozásának szintaxisában vannak különbségek. Ez lehetővé teszi a könyvtárban található fájlok és mappák változatos részhalmazának keresését.

A használat egyik nagy hátránya földgolyó az, hogy az összes eredményt egy menetben tároljuk a memóriába. Ha nagyon nagy, fájlokkal teli mappa van, hamarosan elfogyhat a memória, és ebben az esetben jobb lenne használni opendir és readdir mivel létrehoz egy olvasási folyam puffert.

Az alábbi példa segítségével visszaadhatjuk az összes képfájlt a $ imagePath könyvtárba. Egy tömb visszatér a $ images változóba.

10. tömb_térkép

A PHP által biztosított standard alapfunkciók általában gyorsabban teljesítenek, mint a saját hasonló funkciók létrehozása a PHP kód segítségével. Remek példa erre a hasznosítás tömb_térkép ahelyett, hogy létrehozna egy mert vagy melyik hurok. tömb_térkép lehetővé teszi az a nevű függvény létrehozását visszahív amelyet a szállított tömb minden elemére alkalmazni fog.

Például, ha tömbje volt kisbetűvel, a visszahív függvény hozható létre a tömb összes karakterének nagybetűvel. Kis méretű tömbön a sebességnövekedés meglehetősen kicsi lenne, de ha nagyobb tömböket kezd el használni, akkor valóban jelentős különbséget láthat a sebességben.

Az alábbi példában az ábécét kis- és nagybetűvé alakítjuk. Biztosítottuk a tömb_térkép függvény a feldolgozni kívánt függvény nevének karakterláncával. Ebben az esetben használjuk strtoupper hogy a tömbben lévő minden betűt konvertálja.

Ha összetettebb funkcionalitásra van szükség, akkor biztosíthatjuk az array_map függvényt is, egy bezárást, mint a usort fenti példa.

Szakértői jelvény

A PHP-vel végtelen lehetőségek rejlenek, de csak akkor kezdheti el teljes mértékben megszerezni a PHP-szakértői jelvényét, ha teljes mértékben felismeri az ebben a cikkben ismertetett alapfunkciókat. Lehet hosszú és meredek tanulási görbe, de érdemes. A PHP képezi az Ecce Media-nál végzett munkánk nagy részének alapjait, a egyedi platformok és e-kereskedelmi rendszerek kiépítésétől a tartalomkezelő rendszerekig és még sok minden másig. A webfejlesztés világában minden nap új kihívást jelent, és a PHP-vel és a legfontosabb tippjeinkkel felfegyverkezve Ön elsődleges helyzetben lesz azokkal szemben.