Jak napsat svůj vlastní rámec v php. Praktiky a technologie. Proč si vybrat frameworky

Při vývoji jakékoli softwarový produkt Vývojářský tým stojí především před úkolem správně si vybrat softwarová platforma, která určuje strukturu softwarového systému.

Chcete-li to provést, musíte vzít v úvahu poměrně velké množství charakteristik, od „jak rychle bude vše fungovat“ po „Potřebujeme tuto funkci? A tak pokaždé. Je to v okamžicích brainstorming tým porovná pohodlnost rámce, rychlost a sadu funkcí, které jsou v něm implementovány nebo v modulech s ním kompatibilních.

Ale který z nich je lepší, rychlejší a produktivnější?

Vývojáři neustále porovnávají rámce, aby tento problém objasnili. Například v článku Lukasze Kujawy je to uvedeno PHP srovnání rámců. Jedno „ale“ - článek je z roku 2013. Ale čas plyne... Tak jsme se rozhodli strávit svůj, aktuální srovnání rámců.

Pro hodnocení výkonu byl použit PHP Framework Benchmark. Ke srovnání nabízí mnoho frameworků (nejen těch výše zmíněných), ale s přidáváním nových verzí projektů do úložiště autor nijak nespěchá, což je samozřejmě smutné, i když ne fatální. V případě potřeby přidejte nová verze není těžké. 


Jedním z hlavních cílů tohoto článku je také pokusit se praktickým způsobem identifikovat zlepšení v produktivitě a účinnosti nových verze PHP. Proto bylo testování provedeno na PHP 5.6/7.0/7.1

Co budeme porovnávat?

Pro srovnání byly vybrány následující rámce:
  • slim-3.0
  • ci-3,0
  • lumen-5.1
  • yii-2,0
  • silex-1,3
  • palivo-1,8
  • phpixie-3.2
  • zf-2,5
  • zf-3.0
  • symfony-2.7
  • symfony-3.0
  • laravel-5.3
  • laravel-5.4
  • bluz (verze 7.0.0 - pro PHP5.6 a verze 7.4 pro PHP7.0 a vyšší)
  • ze-1,0
  • falcon-3.0
Testování je rozděleno do 4 typů:
  • výkon (propustnost),
  • obsazená paměť (paměť),
  • doba provedení (doba provedení),
  • počet zahrnutých souborů.

Metodika testování a zkušební stolice

Stroj, na kterém bylo testování provedeno, má následující charakteristiky:

Operační systém: Linux Mint 17 Cinnamon 64-bit
Cinnamin verze 2.2.16
Linuxové jádro: 3.13.0-24-generic
Procesor: Intel Core i3-4160 CPU 3,60 GHz X 2
Paměť: 8 GB

Verze serveru: Apache/2.4.7 (ubuntu)
Sestavení serveru: 15. července 2016
php 7.1 / php7.0 / php5.6

Zadáme příkaz git clone https://github.com/kenjis/php-framework-benchmark – a rámec je již na našem stroji. Protože jsme použili Mint, musíme provést nějaké nastavení: 


# Addednet.netfilter.nf_conntrack_max = 100000net.nf_conntrack_max = 100000net.ipv4.tcp_max_tw_buckets = 180000net.ipv4.tcp_tw_recycle = 1net.ipv4_tcp_10 = 1net.ipv4_tcp_10.

Sudo sysctl -p

Něco málo o struktuře samotného php-framework-benchmark:

/benchmarky- obsahuje bash skripty odpovědné za sběr informací o počtu požadavků za sekundu (pomocí nástroje ab), množství informací, kolik času bylo vynaloženo a kolik souborů bylo voláno ze souboru „start point“.

/lib- adresář obsahující soubory odpovědné za zpracování přijatých informací po zobrazení stránky „Ahoj světe“, zobrazení tabulek s výsledky a sestavení diagramů.

/výstup- adresář, do kterého jsou po testování přidány logy. Pro každý testovaný soubor jsou zde dva soubory: .ab.log – protokol po spuštění nástroje ab a .output – obsahuje informace, které byly zobrazeny na obrazovce (obvykle toto ahoj světe a údaje o paměti, doba provádění, použité soubory).

Zbývající složky jsou šablony rámců, ke kterým již byl přidán jeden řadič, který při přístupu pomocí URI sestaveného podle pravidel pro přístup k tomuto frameworku vrátí řetězec „hello world“.

Chcete-li spustit test, musíte nejprve nakonfigurovat rámce. Zvažme dva přístupy.

Příkaz bash setup.sh nakonfiguruje ty frameworky, které jsou popsány v souboru list.sh. Můžete jej upravit: přidat a odebrat složky pro testování. To znamená, nakonfigurujte jej, jak potřebujete.

příkaz bash setup.sh fatfree-3.5/ slim-3.0/ lumen-5.1/ silex-1.3/ můžete nainstalovat některé jednotlivé rámce jejich zadáním jako parametry příkazu. V některých případech je to výhodné, ale my jsme použili první přístup.

Po nastavení frameworků jsme začali testovat pomocí bash benchmark.sh.

Na konci práce se v terminálu objevila tabulka se seznamem testovaných frameworků, počtem požadavků za vteřinu, relativní hodnotou, obsazenou pamětí a relativní hodnoty tyto ukazatele.

Pro zobrazení grafů jsme použili odkaz http://localhost/php-framework-benchmark/.

Jak jste pochopili, bylo to nutné udělat Nastavení Apache a přinutit jej, aby se podíval na složku rámu. To vše je popsáno v readme, takže nejsou žádné otázky.

Výsledky testování rámce

Každá sekce má strukturu sestávající ze dvou forem prezentace výsledků.

První formou je vizuální typ prezentace. Každá charakteristika obsahuje 4 diagramy. Každý graf ukazuje srovnání mezi frameworky a kumulativní graf. Byl postaven pomocí konkrétní verze RNR. Tímto způsobem můžete sledovat vývoj vylepšení v PHP a frameworkech.

Druhou formou je výsledek testu ve formě tabulky (dost vizualizace, buďme vážní – dej mi více čísel!).

Výkon (propustnost)

Ve vztahu k naší situaci se charakteristika propustnosti měří v počtu požadavků, které náš framework dokáže zpracovat během jedné sekundy. Čím vyšší je tedy toto číslo, tím výkonnější bude naše aplikace, protože bude schopna správně zpracovávat požadavky velké množství uživatelů.

Získali jsme následující výsledky (požadavky za sekundu):

php 5.6 php 7.0 php 7.1
falkon-3.1.2 5058.00 5130.00 7535.00
ci-3,0 2943.55 4116.31 4998.05
slim-3.0 2074.59 3143.94 3681.00
yii-2,0 1256.31 2276.37 2664.61
silex-1,3 1401.92 2263.90 2576.22
lumen-5.1 1316.46 2384.24 2741.81
ze-1,0 1181.14 1989.99 1741.81
phpixie-3.2 898.63 1677.15 1896.23
palivo-1,8 1044.77 1646.67 1770.13
bluz-7.3.1 - * 1774.00 1890.00
zf-2,5 198.66 623.71 739.12
zf-3.0 447.88 1012.57 1197.26
symfony-2.7 360.03 873.40 989.57
symfony-3.0 372.19 853.51 1022.28
laravel-5.3 258.62 346.25 625.99
laravel-5.4 219.82 413.49 600.42

Pro přehlednost jsme vytvořili grafy pro každou verzi PHP:

PHP5.6:

PHP7.0:

PHP7.1:



Špičková paměť

Tato charakteristika (v megabajtech) je zodpovědná za množství paměti zabrané rámcem při provádění úkolu, který mu byl přidělen. Čím nižší je toto číslo, tím lépe pro nás i pro server:
php 5.6 php 7.0 php 7.1
falkon-3.1.2 0.27 0.38 0.37
ci-3,0 0.42 0.38 0.38
slim-3.0 0.61 0.55 0.55
yii-2,0 1.31 0.91 0.91
silex-1,3 0.74 0.65 0.65
lumen-5.1 0.80 0.63 0.63
ze-1,0 0.79 0.56 0.56
phpixie-3.2 1.22 0.82 0.82
palivo-1,8 0.7 0.6 0.6
bluz-7.3.1 - * 0.69 0.69
zf-2,5 3.06 1.34 1.34
zf-3.0 2.12 1.09 1.08
symfony-2.7 3.11 1.41 1.42
symfony-3.0 2.86 1.30 1.32
laravel-5.3 2.91 2.04 2.04
laravel-5.4 3.04 1.45 1.49

* - bluz-7.3.1 nepodporuje php 5.6

PHP 5.6:

PHP 7.0:

PHP 7.1:

Souhrnný kumulativní graf (podle rámce):

dodací lhůta

Doba provedení je doba, kterou systém potřebuje k dokončení daného úkolu. Měří se od začátku úlohy až po výstup výsledku systémem.

Podívali jsme se na to, kolik požadavků za sekundu dokáže framework zpracovat a kolik paměti zabírá. Nyní se podívejme, jak dlouho musíme čekat na přijetí odpovědi ze serveru. Čím nižší je tato hodnota, tím lépe pro nás a pro nervový systém klient naší aplikace.

Čas je uveden v milisekundách (ms):

php 5.6 php 7.0 php 7.1
falkon-3.1.2 1.300 1.470 1.080
ci-3,0 0.996 0.818 1.007
slim-3.0 1.530 1.228 0.662
yii-2,0 1.478 1.410 1.639
silex-1,3 4.657 1.625 2.681
lumen-5.1 2.121 1.829 1.228
ze-1,0 2.629 2.069 1.528
phpixie-3.2 9.329 4.757 1.911
palivo-1,8 3.283 2.684 1.425
bluz-7.3.1 - * 1.619 1.921
zf-2,5 22.042 5.011 3.998
zf-3.0 12.680 2.506 2.989
symfony-2.7 6.529 3.902 2.384
symfony-3.0 9.335 3.987 2.820
laravel-5.3 19.885 4.840 2.622
laravel-5.4 19.561 4.758 3.940

PHP 5.6:

PHP 7.0:

PHP 7.1:

Souhrnný kumulativní graf (podle rámce):

Zahrnuté soubory

Charakteristika zodpovědná za počet zahrnutých souborů, které jsou popsány v souboru „vstupního bodu“ rámce. Je jasné, že systém stráví nějaký čas hledáním a připojováním. Proto, čím méně souborů, tím rychleji Aplikace bude spuštěna poprvé, protože obvykle v následujících časech framework pracuje s mezipamětí, což urychluje práci:
falkon-3.1.2 5
ci-3,0 26
slim-3.0 53
yii-2,0 46
silex-1,3 63
lumen-5.1 37
ze-1,0 68
phpixie-3.2 163
palivo-1,8 53
bluz-7.3.1 95
zf-2,5 222
zf-3.0 188
symfony-2.7 110
symfony-3.0 192
laravel-5.3 38
laravel-5.4 176


Rozdíl v počtu zahrnutých souborů mezi Laravel 5.3 a Laravel 5.4 se může zdát podivný a může vést k diskusím, sporům atd. Spěcháme s objasněním situace. Jak víte, pomocí příkazu

PHP optimalizace řemeslníka --force

V Laravelu 5.3 můžete vygenerovat soubor zkompilovaný.php a tím snížit počet zahrnutých souborů jejich sloučením do jednoho. Je tu ale jedno „ale“: příkaz ke generování tohoto souboru v Laravelu 5.4 již není k dispozici. Vývojář se rozhodl tuto funkci odstranit, protože usoudil (https://github.com/laravel/framework/pull/17003), že je lepší použít k vyladění výkonu opcache.

Vyplatí se upgradovat?

Souhrnná data podle verzí více než jasně ukazují, k jakému zvýšení produktivity a efektivity zdrojů dojde při přechodu (nebo počátečním výběru) na novou verzi PHP.

Při přechodu z PHP 5.6 na PHP 7.0 byl průměrný nárůst výkonu téměř +90 %, s minimálním nárůstem výkonu +33 % pro Laravel 5.3 a maximálním >200 % pro Zend Framework 2.5.

Přechod z verze 7.0 na 7.1 již není tak šokující, ale stále v průměru dává téměř 20% nárůst výkonu.

Shrnutí všech získaných údajů o výkonu různé verze PHP, získáme tyto „matrace“:


Zábavný fakt: Laravel 5.3 vykázal nejmenší nárůst výkonu při migraci z PHP 5.6 na PHP 7.0, ale největší nárůst při migraci z verze 7.0 na verzi 7.1 a ve výsledku je výkon Laravelu 5.3 a 5.4 na PHP 7.1 téměř stejný.

Spotřeba paměti byla také optimalizována, takže přechod z PHP 5.6 na PHP 7.0 umožní vaší aplikaci spotřebovat o 30 % méně paměti.

Aktualizace z verze 7.0 na verzi 7.1 nepřináší prakticky žádný nárůst a v nejnovějších Symfony a Laravel jsme úplně v minusu, protože začínají trochu více „žrát“.


Zbývá se jen podívat na dobu provedení a ano, i zde je vše v pořádku:

  • Přechod z PHP 5.6 na PHP 7.0 vám poskytne průměrné zrychlení o 44 %.
  • Přechod z PHP 7.0 na PHP 7.1 vám poskytne dalších 14% zrychlení.

Poznámka. Testování s ab - s čím jsme se setkali


„A co slim a phpixie“ – tato otázka podnítila zkoumání chování nástroje ab při interakci s těmito frameworky.

Spusťte test samostatně pro Slim-3.0:

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Úroveň souběžnosti: 10
Čas potřebný pro testy: 5,005 sekund
Kompletní požadavky: 2
Neúspěšné požadavky: 0
Celkem přeneseno: 1800 bajtů
Přenesený HTML: 330 bajtů
Požadavky za sekundu: 0,40 [#/s] (průměr)
Čas na žádost: 25024,485 (průměr)
Čas na požadavek: 2502,448 (průměr, napříč všemi souběžnými požadavky)
Přenosová rychlost: přijato 0,35

Něco je špatně - počet požadavků za sekundu je pouze 0,4 (!)

Ab -c 10 -t 3 http://localhost/php-framework-benchmark/laravel-5.4/public/index.php/hello/index

Úroveň souběžnosti: 10
Čas potřebný pro testy: 3,004 sekund
Kompletní požadavky: 1961
Neúspěšné požadavky: 0
Celkem přeneseno: 1995682 bajtů
Přenesené HTML: 66708 bajtů
Požadavky za sekundu: 652,86 [#/s] (průměr)
Čas na žádost: 15,317 (průměr)
Čas na požadavek: 1,532 (průměrná hodnota pro všechny souběžné požadavky)
Přenosový kurz: přijato 648,83

Bylo to spojení Keep Alive, více se dozvíte zde.

„Když zadáte požadavky pomocí „Connection: keep-alive“, následný požadavek na server použije stejné připojení TCP. Toto se nazývá trvalé připojení HTTP. To pomáhá snižovat zatížení procesoru na straně serveru a zlepšuje latenci/dobu odezvy.

Pokud je požadavek podán pomocí „Připojení: zavřít“, znamená to, že jakmile požadavek bylo server potřebuje ukončit připojení. A tak pro každého požádá o navázání nového TCP spojení.

Ve výchozím nastavení klient/server HTTP 1.1 používá udržování stavu, kde klient/server HTTP 1.0 ve výchozím nastavení nepodporuje zachování."


Takže test pro Slim by měl vypadat takto:

Ab -H "Připojení: zavřít" -c 10 -t 3 http://localhost/php-framework-benchmark/slim-3.0/index.php/hello/index

Úroveň souběžnosti: 10
Čas potřebný pro testy: 3 000 sekund
Kompletní požadavky: 10709
Neúspěšné požadavky: 0
Celkem přeneseno: 2131091 bajtů
Přenesené HTML: 353397 bajtů
Požadavky za sekundu: 3569,53 [#/s] (průměr)
Čas na žádost: 2,801 (průměr)
Doba na požadavek: 0,280 (průměrná hodnota pro všechny souběžné požadavky)
Přenosový kurz: přijato 693,69

Závěr

Podle očekávání bezpodmínečný vůdce z hlediska výkonu (ale ne rychlosti vývoje) je Phalcon. Druhé místo - a vlastně první mezi frameworky PHP (ne C, ve kterém je napsáno zdrojový kód Phalcon) - hodnocen CodeIgniter 3!

Samozřejmě bychom neměli zapomínat, že každý nástroj má svůj vlastní účel. Pokud si vyberete malý a lehký framework a budete na něm psát něco jiného než jednoduché aplikace nebo REST API, pak s největší pravděpodobností narazíte na problémy při rozšiřování funkčnosti. A naopak - redundance plnohodnotných, velkých frameworků bude znamenat finanční náklady na údržbu hostingu i pro základní aplikace pod velkým zatížením.

Toto testování bylo provedeno, abychom přesvědčili/prozradili/posílili pozici jazykových verzí PHP 7.0 a 7.1 ve vaší mysli a v budoucích projektech, abychom předali zprávu, že produktivita se skutečně zvýšila.

Refaktoring vnitřní struktury data a přidání dalšího kroku před kompilací kódu ve formě abstraktního syntaxového stromu (AST) vedlo k vynikajícímu výkonu a efektivnější alokaci paměti. Samotné výsledky vypadají slibně: testy provedené na skutečné aplikace, ukazují, že PHP 7 se v průměru zdvojnásobilo rychlejší PHP 5.6 a také využívá o 50 % méně paměti během zpracování požadavků, díky čemuž je PHP 7 silným uchazečem o kompilátor HHVM JIT od Facebooku.

Testy plně potvrzují jak dvakrát zrychlené zpracování požadavků v PHP7, tak snížené množství použité paměti.

Při práci na volné noze však často narážím na stránky využívající systémy s vlastním psaním. Programátoři je nevypisují z dobrého života. V závislosti na míře jednoduchosti (složitosti) projektu je nadměrná nebo naopak nedostatečná aplikace hotový systém a jeho přepracování zabere více času než vytvoření webu od začátku. Jednostránkový web například nevyžaduje těžký systém jako Joomla nebo framework jako Yii, ale Typ CMS Textpattern může postrádat funkčnost. Úkoly zadané zákazníkem mohou být navíc velmi specifické a poměrně obtížně realizovatelné na hotovém systému.

Můžete například pracovat s modely v . Jde o to o ActiveRecord. Yii má na svých oficiálních stránkách výborný návod, jak vytvořit blog. Pokud se toho budete držet a dělat vše tak, jak je napsáno, tak po pár hodinách studia můžete získat plnohodnotný blog. S kategoriemi, značkami, uživateli a panelem administrátora.

Problémy začínají, když se pokusíte udělat něco, co není zahrnuto v příručce. Zobrazit podobné materiály pod článkem. Chcete-li to provést, musíte vytvořit relační model, mnohem složitější, než je uvedeno v příkladech.

Jak řekl jeden z našich komiků, „tady začíná western“. To, co by v SQL vyžadovalo 3 řádky kódu, zabere několik nocí čtení manuálů a experimentování v Active Record. Protože na první pohled triviální úkol, náhle způsobí nevysvětlitelnou chybu Yii, o které slyšelo jeden a půl lidí, oba Číňané. Tento příklad není přitažený za vlasy, ti, kteří programovali v Yii pomocí Actve Record, jej budou podporovat.

Tato metodika práce s daty je velmi pohodlná, pokud jde o jednu tabulku. Nebo dokonce dva, když komunikace probíhá jeden až mnoho, jedno pole najednou. Skutečné peklo se rozpoutá, když potřebujete získat data z více tabulek.

Ani ve světě CMS nemusíte chodit daleko. Při práci na modulu map Yandex pro Joomla bylo nutné jej připojit v adminu webu javascriptový soubor. Týdenní studium systému nepřineslo nic. V modulech taková funkce prostě není. Musím říct, že jsem se z toho dostal pomocí funkcionality rozšířených polí a propojil požadovaný soubor. Ale množství času, které mi to trvalo, neodpovídá tomu, kdyby byl systém postaven podle mých zákonů a já věděl, co a kam je připojeno.

Budu o tom mluvit v tomto článku. Jak psát php framework od nuly. Popíšeme základní techniky pro návrh MVC frameworků v čistém PHP bez použití knihoven třetích stran.

Frameworky píší programátoři stejně jako vy. Nic není nemožné. Napište si framework pro sebe, na kterém pak můžete stavět návrhy atypických stránek.

Chci vás varovat, že byste neměli psát své kolo bez zvláštní potřeby a zkušeností. Většina z Kód budete muset napsat ručně. Nebudou žádné hotové moduly ani rozšíření.

Existují však také výhody: systém bude zcela pod vaší kontrolou. Žádná omezení API nebo systémové požadavky. Pouze čistá vanilkaPHP a nic extra.

Nechme texty a pojďme konečně ke kódu.

Vstupní bod

Jakýkoli web, CMS nebo framework začíná vstupním bodem. Obvykle je to index.php v kořenovém adresáři webu. Ale to neuděláme. Aby programátor pracující s naším frameworkem okamžitě pochopil, že všechna data procházejí vstupním bodem, nazvěme soubor main.php. Pak to bude zřejmé – všechny požadavky jsou přesměrovány přes .htaccess

AdddefaultCharset UTF-8 REWRITEENGINE na Php_value Upload_Max_FileSize 50M post_value post_max_size 50m pHP_VALUE DISPLAY_RRORS 1 DirectoryinDEX Main.php? Controller = Index errordocument 404 /main.php?php? RewriteCond % (REQUEST_FILENAME) !-d RewriteRule ^(.*)$ main.php?route=$1

Prvních 8 řádků jsou pomocná nastavení, která budou pro framework v budoucnu užitečná. Nastavili jsme výchozí kódování na utf-8, web na něm bude fungovat. Povolili jsme modul apache Rewrite, abychom přesměrovali všechny nestatické požadavky na main.php. To je to, co dělají poslední 3 řádky. Celý řetězec dotazu, který následuje za doménou, bude předán do proměnné $_GET["route"]. Tito. žádost http://sitename.ru/kolesa/perellli/?id=5 se promění v http://sitename.ru/main.php?route= kolesa/perelli/&id=5

Další manipulace s analýzou URL se provádějí pomocí pomocí PHP. Toto je běžná technika a můžete ji snadno použít v jiných systémech. Takhle funguje i Yii. Náš framework ale na rozdíl od Yii nemůže fungovat bez .htaccess.

Soubor main.php toho moc dělat nemusí, jen definuje konstanty cesty, propojí framework a spustí aplikaci

start();

Struktura

Nyní se zamysleme nad strukturou našeho rámce. Je vhodné, aby jeho soubory byly v samostatné složce. Vytvořme takovou strukturu

Aplikace -- řadiče -- modely -- pohledy -- config.php - ideální -- třídy -- framework.php -- config.php .htaccess main.php

náš ideální =) engine bude v ideální složce a uživatelské soubory budou ve složce aplikace.

v souboru framework.php nadefinujeme automatické zavaděče tříd, abychom nezapisovali pokaždé ručně include "název třídy.php"; O této technice jsem již psal

Tento soubor bude také obsahovat další systémové akce. Ale zatím to bude stačit.

Autoloadery se spustí, když je třída použita. Nejprve se hledá ve složce frameworku, pak ve složce controllers, pak v modelech. V souladu s tím nemůžete volat řadič stejně jako třídu nebo modul.

Nyní si popišme třídu App, nachází se ve složce class enginu. Její metoda spuštění spustí naši aplikaci.

parse();

$controller = app::gi(Router::gi()->controller."Controller");

V kódu se objeví třída Router. Zanalyzuje proměnnou $_GET["route"] a vrátí ovladač a akci - tzn. způsob tohoto ovladače. Protože zatím píšeme pouze framework, tato třída nic neudělá. Stačí vyplnit příslušná pole.

ovladač = $_REQUEST["řadič"];

if(isset($_REQUEST["akce"])) $this->akce = $_REQUEST["akce"];

))

Rámcový rámec je připraven. Nyní vytvoříme jednu životně důležitou aplikaci/controllers/UserController.php

Uživatelé jsou potřeba v každém systému.

Zatím nic nedělá. Pouze vytvoří uživatelský model a zobrazí jeho reprezentaci na obrazovce. Uživatelský model dědí třídu class/Model.php

data[$name])?$this->data[$name]:null;

) function __set($name,$value)( $this->data[$name] = $value; ) )a kód modelu application/models/User.php

Jak je vidět, ani on nedělá nic zvláštního.

Ahoj

jméno?>!!!

Struktura našeho rámce tedy bude mít následující podobu:

Aplikace -- ovladače --- UserController.php -- modely --- User.php -- zobrazení --- uživatel ---- index.php -- config.php - ideální -- třídy -- framework.php -- config.php .htaccess main.php

Spuštěním v adresním řádku

http://sitename/index.html?controller=user&action=index v prohlížeči uvidíme vzácné

Ahoj Valery!!!

Nyní se vám zdá, že je to všechno nesmysl a že to všechno šlo zjednodušit. Ale když se nad tím zamyslíte, náš framework má obrovské schopnosti. Je to kompletně strukturované. Rozšíření jeho schopností nebude těžké. Přidání třídy pro práci s databází

Jak všichni víme, PHP je nejoblíbenější a nejpohodlnější skriptovací programovací jazyk. To značně usnadňuje proces vývoje a pomáhá snižovat náklady a čas. To je důvod, proč je PHP vždy v centru pozornosti programovacích jazyků.

S příchodem tvorby PHP se komplexní webové projekty (v PHP) od nuly staly nesmyslným řešením. Aby bylo možné nějak strukturovat vývojový proces, byly vytvořeny frameworky PHP.

Rámce umožňují proces programování. Pomáhají vám psát a strukturovat kód, implementovat návrh MVC a škálovat projekty. Nelze tedy popřít fakt, že PHP frameworky jsou jediným způsobem, jak dosáhnout úspěšného programování.

Není pochyb o tom, že Laravelova dokumentace má blízko k dokonalosti. Tento framework má mnoho funkcí, které mají za cíl zajistit co nejrychlejší vývojový proces.

Lavarel má svůj vlastní šablonovací engine "Blade" a elegantní syntaxi, díky které je nejjednodušší provádět běžné úkoly: ověřování, relace, parsování fronty, směrování ekexitybt. Lavarel má vestavěné programovací prostředí s názvem Homestead, které je postaveno především na "Vagrant". Všechny možné případy pro tuto strukturu jsou pečlivě analyzovány ve videonávodech Laracasts.

#2 Symfony

Tento PHP framework se skládá z několika komponent. Je napsán v PHP5, které také používá MVC. Symfony nabízí rychlý vývoj a správu webu, která vám pomůže snadno provádět běžné úlohy programování webu. Jednou z jeho hlavních výhod je několik podpůrných databází:

    MySQL databáze;

    PostgreSQL databáze;

    SQLite nebo jakákoli jiná databáze kompatibilní s PDO.

Symfony se skládá z knihoven PHP, které lze znovu použít a nasadit pro různé úkoly: vytváření formulářů, objektů a konfiguračních a ověřovacích šablon atd. Libovolnou komponentu lze nainstalovat pomocí Composer, správce balíčků PHP.

Žádný popis Symfony by nebyl úplný bez zmínky, že tento framework se může pochlubit obrovskou komunitou a velkým počtem fanoušků.

#3 Falcon

Phalcon byl vytvořen před čtyřmi lety a brzy se stal populárním mezi vývojáři serverů. Tento framework je považován za velmi rychlý, protože je navržen v C a C++, což umožňuje optimalizaci vysokého výkonu. Pro práci s Phalconem není třeba se učit C. Veškerá funkčnost je obsažena v PHP třídách, které lze použít pro jakýkoli úkol. Phalcon má mnoho dalších skvělých funkcí: bezpečnostní systémy, víceúčelové automatické zavaděče, správa zdrojů, překlad, ukládání do mezipaměti atd. Dokumentaci Phalconu lze snadno používat, přestože je poměrně rozsáhlá.

Protože Phalcon byl původně vytvořen jako doplněk k C, jeho architektura byla optimalizována pro nízkou úroveň. To pomáhá snížit spotřebu prostředků, která je typická pro aplikace založené na MVC.

#4 CodeIgniter

CodeIgniter má dlouholeté zkušenosti v oblasti PHP frameworků. Lze jej snadno nainstalovat a vyžaduje minimální uživatelskou konfiguraci. CodeIgniter je dobré řešení, pokud existují možné konflikty mezi různými verzemi PHP. Funguje skvěle na všech platformách. Je důležité si uvědomit, že CodeIgniter není zcela založen na MVC.

CodeIgniter má nekonečný vývojový prostor. Cílem bylo vytvořit jednoduchou strukturu o velikosti až 2 MB s možností přidat jakékoli pluginy, pokud je potřeba složitější funkcionalita. Jednou z jeho dalších výhod je rychlost. CodeIgniter zpracovává databáze úloh mnohem rychleji než jiné systémy.

Jak můžete vidět, tento rámec PHP je jednoduchý a snadno se učí. CodeIgniter je snadno rozšiřitelný, bezpečný a má jednoduchý přístup a je ideální pro začátečníky.

#5 Rámec Yii

Vysoce výkonný PHP framework, který využívá MVC. Je určen pro rychlý a efektivní vývoj webových aplikací. Jedná se o nejrychlejší framework PHP, protože využívá zatížení na vyžádání. Je to objektově orientované prostředí, a proto využívá princip „neopakování“. V souladu s tím zůstává základ kodexu vždy jasný a logický.

Tato struktura umožňuje rychle realizovat rozsáhlé uživatelské projekty, jako jsou internetové portály, CMS a další komplexní systémy. Yii je sada nástrojů pro efektivní a hotová řešení. Některé z nich:

  • ActiveRecord pro relační a NoSQL databáze;

  • Podpora víceúrovňového ukládání do mezipaměti.

Výběr mechanismů je zde jednoduchý, takže struktura bude vhodná pro ty, kteří dříve vyvinuli rozhraní front-end. Yii má Gii, generátor kódu, který přispívá k objektově orientovanému vývoji, rychlému prototypování a nabízí také webové uživatelské rozhraní, kde dokáže vygenerovat požadovaný kód.

#6 Zend

Zend je naprogramován v objektově orientovaném stylu, který využívá nejnovější inovace PHP. Je navržen tak, aby byl méně závislý na ostatních součástech, z nichž každou lze používat samostatně. Standardní sada knihoven Zendu nám však poskytuje velmi výkonný a škálovatelný vývojový nástroj. Navíc nabízí robustní a vysoce výkonné MVC a snadno použitelnou databázovou abstrakci, což z něj společně dělá nejlepší PHP framework pro webové aplikace.

Zend se používá k vývoji webových produktů v PHP 5.3+. Tento framework využívá nejužitečnější funkce PHP 5.3 a robustní řešení s různými možnostmi konfigurace. Zend se obecně nedoporučuje pro použití v malých aplikacích, ale pro velké projekty může být lepším řešením. Vývojáři Zendu zohlednili metodiku Agile, která umožňuje vytvářet vysoce kvalitní aplikace pro firemní klientelu.

#7 CakePHP

CakePHP byl napsán před 10 lety jako PHP programovací nástroj pro tvorbu webových projektů a stále má aktivní a rostoucí komunitu. Stejně jako většina ostatních frameworků implementuje vzor MVC. CakePHP byl původně vytvořen jako klon populární Ruby On Rails a mnoho Cakeových nápadů bylo vypůjčeno z RoR. Skutečnost, že CakePHP podporuje nejen PHP5, ale také PHP4, jej odlišuje od ostatních konkurentů na trhu.

Uplynulo deset let, ale CakePHP je stále na vrcholu. Je snadné se s ním naučit pracovat. Integrovaná aplikace, jako je CRUD, je při interakci s databází nepostradatelná. Nejnovější verze CakePHP 3.x zlepšily správu relací a rozšířily možnost vytvářet více individuálních knihoven.

Mezi projekty realizované v CakePHP patří lokality BMW a Hyundai. Tuto strukturu můžete zvolit, pokud vaše webové aplikace vyžadují vysokou úroveň zabezpečení, protože CakePHP má skvělé funkce, jako jsou:

    Vstupní kontrola;

    Bezpečnostní systém používá zadané SQL;

    Zabraňuje skriptování mezi weby;

    Chrání před paděláním požadavků napříč weby a mnohem více.

Nejlepší PHP frameworky. Sečteno a podtrženo

Dnes jsme se pokusili přezkoumat nejpopulárnější frameworky PHP. Ale co s tím nejlepším? Který z nich je nejoblíbenější framework PHP? Každá struktura má své pro a proti. Ale nenajdete ten nejlepší, protože jsou dobré, i když mezi nimi jsou nějaké rozdíly. Ve skutečnosti vše závisí pouze na potřebách klienta. Jediná věc, která vás může přesvědčit o konečném produktu vývoje společnosti. Neváhejte a najměte si tým odborníků na PHP. Vyvíjíme produkty pro startupy, obchodní společnosti atd. V průběhu let jsme naprogramovali desítky softwarových produktů a dokončili mnoho úspěšných projektů. Máte-li zájem o produkty PHP, kontaktujte nás pro více informací. [e-mail chráněný]

Výběr je příliš velký a výběr správného rámce se stal poměrně problematickým. Stejně jako mnoho jiných vývojářů může vaše oko padnout na oblíbené, osvědčené a spolehlivé frameworky Bootstrap a Foundation. Novější, méně známé frameworky však mohou být pro vaše potřeby mnohem vhodnější. V takových podmínkách prostě potřebujete rozumět nejpopulárnějším frameworkům současnosti.

Na co se zaměřit při výběru front-end frameworku

Než začnete hledat front-end framework pro svůj další projekt, je velmi důležité seznámit se s nejlepšími funkcemi. Když je budete znát, budete moci mnohem rychleji zvážit všechna pro a proti nejpopulárnějších front-end frameworků:

Vaše úroveň – při výběru front-end frameworku zvažte úroveň svých znalostí. Pokud jste začátečník, možná budete chtít zvážit robustní rámec Bootstrap, který má spoustu vestavěných widgetů a vyžaduje minimální znalosti kódování. Pokud jste pokročilejší vývojář, pak vám bude vyhovovat jednodušší framework, který vám dá větší prostor pro přizpůsobení. Takové frameworky jsou kompaktnější a mají méně kódu, což bude jen plus.

Responzivní design – každý web, který vytvoříte, by se měl dobře zobrazovat na všech zařízeních, protože stále více lidí přistupuje k internetu prostřednictvím mobilních zařízení. Podobný web vydal v roce 2015 zprávu o stavu mobilního internetu ve Spojených státech, která zjistila, že 56 procent spotřebitelů s nejvyšší návštěvností webu v USA přistupuje k internetu z mobilního zařízení. Hledejte front-end frameworky, které podporují responzivní design, pak budete mít o problém méně.

Moderní trendy a přístupy ve vývoji webu

Naučte se algoritmus pro rychlý růst od nuly při vytváření webových stránek

CSS preprocesory – Pokud používáte CSS preprocesory, jako je Sass nebo LESS, ujistěte se, že jsou kompatibilní s frameworkem.

Vzhled – Vyberte si rámec, který vám umožní dosáhnout skvělého vzhledu s minimálním úsilím.

Prototypování – Ideální front-end framework vám umožňuje rychle vytvářet drátěné modely a prototypy pro urychlení procesu návrhu a vývoje.

A co je nejdůležitější: dobrý front-end framework zjednodušuje, modernizuje a urychluje proces návrhu a vývoje webových stránek a zároveň vám poskytuje flexibilitu a funkčnost pro vytvoření jedinečného produktu.

Bez dalších okolků vám představuji osmý nejoblíbenější front-end framework v roce 2016.

Bootstrap

TOP by byl neúplný bez velmi oblíbeného front-end frameworku Bootstrap. Autory frameworku jsou tvůrci Twitteru, kteří jej vydali v roce 2011. Nejpoužívanější open-source framework na světě.

Stejně jako jakýkoli jiný efektivní front-end framework obsahuje Bootstrap komponenty HTML, CSS a JS. Rámec dodržuje standardy responzivního webového designu a umožňuje vám vytvářet responzivní webové stránky jakékoli složitosti a velikosti.

Neustálé aktualizace Bootstrapu zajišťují, že získáte nejnovější a nejlepší funkce. Do rámce byla například téměř okamžitě přidána témata, která splňují standardy materiálového designu Google. Témata byla vylepšena, aby podporovala Sass.

podpora pro responzivní webdesign (lze v případě potřeby deaktivovat);

rozsáhlá dokumentace.

zřídka používané styly zvyšují váhu standardního rámce na 276 KB;

Existuje příliš mnoho HTML tříd a prvků DOM, což znečišťuje kód a mate uživatele.

Vhodné pro začátečníky a ty, kteří preferují spolehlivé front-end frameworky.

Neexistují žádné uzamčené styly, což vám dává větší flexibilitu;

místo pixelů jsou použity jednotky měření REM, což umožňuje explicitně nenastavovat šířku, výšku a další atributy pro každé zařízení.

Ve výchozím nastavení poměrně velká váha souborů;

pro začátečníky trochu komplikované.

Vhodné pro vývojáře se slušnými zkušenostmi, jejichž hlavním úkolem je rychlý vývoj, atraktivní a responzivní weby.

Zhmotnit

Rámec Pure byl vytvořen vývojovým týmem Yahoo. Sada obsahuje lehkou řadu modulů CSS, které jsou vhodné pro jakýkoli projekt. S Pure můžete snadno vytvářet responzivní tlačítka, nabídky, mřížky, tabulky atd. Framework je napsán v čistém CSS a nepodporuje pluginy JS ani JQuery.

Po minifikaci a kompresi pomocí Gzip se rámec Pure zkomprimuje na 4,5 kb, což z něj činí jeden z nejlehčích a nejcitlivějších front-end frameworků. Pure je ideální pro mobilní vývoj, a proto zaujal spoustu vývojářů.

velmi lehký, což zajišťuje rychlé načítání i na mobilních zařízeních;

flexibilní řadu modulů CSS lze použít v absolutně jakémkoli designu a projektu.

napsané v CSS bez podpory pluginů JS nebo JQuery.

Vhodné pro vývojáře, kteří se zaměřují na vytváření responzivních a rychlých mobilních webů.

Kostra

Skeleton je lehká citlivá šablona s pouhými 400 řádky kódu. Rámec obsahuje minimální potřebnou funkcionalitu pro zahájení vývoje. Na rozdíl od výše popsaných frameworků se nejedná o komplexní řešení.

Skeleton je responzivní framework založený na 12sloupcové mřížce. Sada obsahuje pouze nezbytné prvky: tlačítka, seznamy, tabulky, formuláře atd.

velmi lehký;

jednoduchost a pohodlí pro psaní malých projektů.

nedostatek širokého výběru komponent, na rozdíl od velkých frameworků.

Vhodné pro ty, kteří vytvářejí malé projekty, které nepotřebují všechny stylingové komponenty, které lze nalézt ve velkých frameworkech.

UIKit

UIKit je vysoce modulární front-end framework, který z řady důvodů vyčnívá z řady. Hlavním důvodem je přítomnost dvou preprocesorů, LESS a Sass.

Díky svým flexibilním a citlivým komponentám s jasnými názvy se UIKit stal jedním z nejoblíbenějších front-end frameworků.

Díky 30 modulárním komponentům je rám ještě všestrannější. Mezi komponenty patří nabídky, formuláře a tabulky HTML, komponenty JS, jako jsou posuvné karty a modály, běžné prvky, jako jsou tlačítka, značky a překryvné vrstvy, a komponenty rozvržení, jako jsou plynulé, responzivní mřížkové systémy.

vysoké přizpůsobení;

unikátní modulární struktura, která umožňuje přidávat komponenty ke stylům, aniž by to ovlivnilo celkové styly;

schopnost vytvářet složitá rozhraní díky komponentám, jako jsou vnořené seznamy.

Framework je stále nový, na internetu je k němu velmi málo zdrojů.

Vhodné pro poměrně zkušené vývojáře, protože v současné době je o frameworku velmi málo informací. Skvělé pro vytváření jednoduchých i složitých projektů.

Miligram

Milligram je další lehký framework podobný Skeleton. Po kompresi přes Gzip dosahuje velikost souboru 2KB, což vývojářům poskytuje jednoduchý a pohodlný start.

Mřížkový systém Milligramu se liší od většiny, protože používá standard CSS Flexible Box Layout Module. Obsahuje také několik klíčových komponent, které vám pomohou začít, včetně písem, tlačítek, formulářů, seznamů, tabulek, uvozovek a dalších.

velmi lehký, pouze 2Kb po kompresi přes Gzip;

využívá mřížkový systém Flexbox.

framework je zcela nový, je o něm velmi málo informací;

minimální počet stylových komponent ve srovnání s většími frameworky.

Vhodné pro vývojáře vytvářející malé projekty, které nepotřebují mnoho stylingových komponent, a pro vývojáře, kteří chtějí používat Flexbox.

Susy

Někdo řekne, že Susy není zrovna front-end framework, protože řeší složité problémy s rozložením. Ve skutečnosti mnoho lidí považuje Susy za mřížkový systém, ale může být nepostradatelným nástrojem pro lidi pracující s rozvržením.

Susy vás vybaví mixiny, které můžete použít k vytváření sítí. Framework provede všechny výpočty za vás, což ušetří spoustu času a úsilí.

Susy vám umožňuje vytvářet sítě libovolné složitosti. Pokud se snažíte vyřešit problém s vytvořením složitého mřížkového systému, Susy vám může pomoci.

zvýšená flexibilita umožňuje vytvářet sítě libovolné složitosti;

automatické výpočty.

nepokrývá všechny problémy s designem webových stránek, což bude vyžadovat jiný rámec;

žádné vestavěné mřížky.

Vhodné pro vývojáře s jedinečnými designovými výzvami.

Statistiky front-end frameworků

Vaše rozhodnutí by nemělo být založeno na popularitě rámce. Rámec musí být zvolen na základě vývojových potřeb. A přesto je zajímavé, jak se všechny tyto frameworky umístí v žebříčku. Níže uvedený seznam ukazuje, kolik hvězdiček každý projekt získal na GitGubu v době psaní (od nejoblíbenějších po nejméně oblíbené).

Bootstrap: 101 433 hvězdiček

Sémantické uživatelské rozhraní: 28 170 hvězdiček

Nadace: 24 127 hvězd

Zhmotnit: 21 515 hvězd

UI materiálu: 19 631 hvězdiček

Čistý: 14 967 hvězdiček

Kostra: 12 622 hvězd

UIKit: 7 433 hvězdiček

Miligram: 4 195 hvězdiček

Susy: 3 506 hvězdiček

Ve srovnání TOP 5 front-end frameworků na Google Trends je navíc jasné, že Bootstrap je v počtu zmínek stále o hlavu a ramena před svými konkurenty.

Závěr

Jak vidíte, různé front-endové rámce mají své výhody. Co funguje pro jednoho vývojáře nebo projekt, nemusí fungovat pro jiného. Proto je nesmírně důležité analyzovat mnoho možností před výběrem něčeho konkrétního.

Před výběrem front-end frameworku si určete úroveň svých znalostí a také základní požadavky vašeho projektu. Je pravděpodobné, že jeden nebo více produktů z tohoto seznamu bude pro vás ideální.

V dnešní době již není potřeba vytvářet webové stránky pomocí složitých webových vývojářských jazyků. Nyní se můžete obejít bez vlastního vytváření knihoven, komponent, separace modelů a nízkoúrovňového zabezpečení. Díky PHP frameworkům můžete tyto kroky přeskočit.

Pojďme se podívat na 9 nejlepších frameworků, se kterými můžete vytvářet úžasné responzivní weby.

1. Symfony 2

Tento framework rozhodně není pro začátečníky. Se všemi svými mnoha funkcemi modelů, objektů, tras, ovladačů se může zdát komplexní. Ale pokud máte solidní znalosti v PHP a HTML, můžete s ním vytvářet neuvěřitelné webové aplikace.

Symfony je open source projekt hostovaný na GitHubu a více než 300 000 programátorů s ním pracovalo a vylepšovalo svůj kód.

Symfony 2 se skládá ze sady opakovaně použitelných PHP komponent, které se snadno instalují na většinu platforem. A je známo, že je velmi stabilní a flexibilní.

2. Falcon

Je to framework napsaný v C, nejrychlejší platformě PHP.

Nabízí velké množství nejnovějších funkcí, jako je směrování, procházení šablon, ukládání do mezipaměti a ORM, řadiče, dotazovací jazyk atd. Phalcon je vždy o krok napřed před konkurencí díky nízkým systémovým požadavkům, které vám umožní používat mnohem méně zdrojů. A také prostřednictvím vkládání závislostí, PHP, pomocných sad PSR-4

autoloader a pokročilé funkce směrování. Je vhodný pro nezkušené uživatele, protože jeho učení nezabere mnoho času. Zde je, jaký rámec si musíte vybrat v PHP.

3. Laravel Laravel je nejpopulárnější framework roku 2016. Je to také nejjednodušší rámec na naučení. Jeho nejvýkonnější funkcí je vlastní šablonovací engine s názvem „Čepel

“, která nespotřebovává další zdroje na vašem webu.

Laravel má také nástroj pro integraci balíčků třetích stran do vašeho webu. Laravel je podporován velkou, aktivní komunitou, což vám umožňuje rychle začít.

4. Yii

Další snadno použitelný open source framework. Vývojový proces bude plynulý a efektivní díky použití PHP5. Framework zahrnuje všechny funkce potřebné pro profesionální weby, stejně jako CMS a CRM. To jsou dva výchozí body, které tvoří základ každého spolehlivého scénáře. Pokud jde o bezpečnost, Yii funguje úžasně

. Gii, dostupný jako součást Yii, je výkonný generátor kódu. Díky němu můžete snadno vytvářet formuláře, moduly, CRUD, modely atd.

5. CodeIgniter

Spolehlivý, plnohodnotný nástroj pro tvorbu webových aplikací. Zabírá pouze 2 MB místa na disku a uživatelská příručka podrobně popisuje komponenty, které usnadňují obejít složité MVC.

CodeIgniter poskytuje substituční nástroj se šablonami a pluginy.

Náš žebříček PHP frameworků pokračuje moderním frameworkem, který také podporuje 9 jazyků, i když byl vydán již v roce 2005. CakePHP 3.3 je umístěn jako výkonný rámec.

S jeho pomocí mohou i začínající programátoři vytvářet vizuálně atraktivní webové stránky. Rámcový vzor MVC, který poskytuje modelovou podporu pro efektivnější správu dat. Stejně jako funkce ORM a mnoho komponent, pluginů a pomocníků.

CakePHP je nejvhodnější pro komerční weby a nevyžaduje žádnou konfiguraci, protože neobsahuje složité soubory YAML nebo XML.

7. ZendPHP

Tento rámec byl vydán před 9 lety a stále zůstává relevantní. Je to objektově orientovaný framework, takže je nejlepší ho použít pro dědičnost nebo rozhraní. Jeho nejnovější verze je optimalizována pro PHP7, ale perfektně podporuje i PHP 5.5.

Zend nahradil zásobník MVC jednodušší alternativou postavenou na vzorech middlewaru, jako je Apigility.

Tento framework není vhodný pro začátečníky, protože je těžké se ho naučit. Jakmile si na to ale zvyknete, budete schopni vyvíjet rozsáhlé webové projekty.

8. PalivoPHP

Palivo se doporučuje začátečníkům i profesionálům. Toto je populární PHP framework, který podporuje HMVC. Je celosvětově uznávaný pro svou jednoduchost, flexibilitu a moderní funkce.

Její autoři připravili výkonná sekce dokumentace, takže vývojáři mohou vytvářet profesionální webové stránky pomocí čisté syntaxe. Rámec se vyznačuje pokročilými možnostmi importu, protože každý uživatel může pracovat s Fuel z libovolného serveru.

9. Štíhlý

Flexibilní PHP framework, který lze klasifikovat jako mikrorámec. Dodává se s optimalizovaným směrovačem, funkcí vykreslování šablon s vlastními pohledy, zabezpečenými soubory cookie, funkcemi rychlého zasílání zpráv, ukládáním do mezipaměti HTTP a zpracováním chyb.

Tímto končí náš seznam nejlepších PHP frameworků pro vytváření responzivních webů. Nyní musíte pochopit, že kvalita vytvořených stránek je určena nejen úrovní vašich dovedností, ale také správným výběrem rámce.

Překlad článku " 9 Nejlepší PHP framework s k vytváření úžasných responzivních webových stránek» přátelský projektový tým.




Nahoru