Jednoduchý framework PHP

PetrZ

Re:Jednoduchý framework PHP
« Odpověď #30 kdy: 17. 01. 2019, 21:31:14 »
Složitost frameworků je věc diskutabilní. Záleží, co všechno chci využít, nebo co si chci řešit sám. Teda přesněji - používám Laravel již od 4-kových verzí, teď se snažím projekty aktualizovat na poslední verze, pokud to jde. A i tak si myslím, že i po těch letech nevyužívám ani polovinu věcí, co nabízí, ale i tak na něm vytvářím hodně aplikací od blogu, kalendářů, vyhodnocování dat až po eshop.

https://laravel.com/docs/5.7


BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jednoduchý framework PHP
« Odpověď #31 kdy: 17. 01. 2019, 22:15:17 »
Odvážní jedinci mohou zkusit Haxe: https://haxe.org/

Jeden jazyk, který se mimojiné kompiluje jak do JavaScriptu, tak do PHP. Podpora PHP včetně bugfixů se rapidně rozvíjí ve verzi 4 která je sice zatím jen preview, ale pokud to funguje tak to funguje.

Haxe je jazyk velmi podobný ActionScriptu (Flash), a s vhodnými knihovnami jej dokáže nahradit. Rychlost transpilace je ve srovnání s TypeScriptem velmi rychlá, proběhne v podstatě ihned.

Už jsem na to kdysy dávno narazil. Setkal jsi se někdy s reálným nasazením?

Jano7

Re:Jednoduchý framework PHP
« Odpověď #32 kdy: 17. 01. 2019, 23:19:30 »
Citace
Hned první věc kterou najde google na dotaz php rest api je tento tutoriál:

https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html

Žádný framework to nepoužívá, a nic složitého tam taky není.

Nič zložitého to možno nie je, pretože tak veľa ešte treba dopracovať.
Ten tutoriál je plný chýb. Začiatočník by rozhodne nemal začínať na čistom PHP (iba ak pre učenie), mal by začať so Symfony alebo Laravel. Svoj vlastný framework/aplikáciu bez frameworku si môže dovoliť len naozaj pokročilý programátor. Autor hore uvedeného tutoriálu ním zatiaľ nie je, má sa čo učiť. Námatkovo vyberiem chyby.


Kód: [Vybrat]
// specify your own database credentials
private $host = "localhost";
private $db_name = "api_db";
private $username = "root";
private $password = "";
public $conn;

Configuračné dáta sa dávajú zvlášť do súborou. Navyše, uloženie účtu a hesla treba riešiť zvlášť. Heslo treba tiež
samozrejme zakryptovať.

Kód: [Vybrat]
try{
        $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
         $this->conn->exec("set names utf8");
    }catch(PDOException $exception){
         echo "Connection error: " . $exception->getMessage();
}


Pokiaľ viem, v PHP by sa takto nemali riešiť výnimky. Majú sa nechať vybublať. A keď už ich zachytávame, tak ich nevypisujeme, ale logujeme. Nastaviť logovanie a všetko s tým spojené je fuška.

Kód: [Vybrat]
header("Access-Control-Allow-Origin: *");

Bezpečnostná chyba.

Kód: [Vybrat]
$query = "SELECT
            id, name, description
        FROM
            " . $this->table_name . "
        ORDER BY
            name";
 
$stmt = $this->conn->prepare( $query );
$stmt->execute();

Toto tiež nevyzerá dobre, SQL príkazy sa nesmú takto spájať. Aj keď v tomto prípade zrejme nedôjde k SQL Injection, takto programovať je bezpečnostné riziko.

Kód: [Vybrat]
$keywords=isset($_GET["s"]) ? $_GET["s"] : "";

Toto je nedostatočná validácia.

Frameworku sú tu z určitého dôvodu. Aby sa predchádzalo chybám a znovuvynaliezaniu kolesa. Opakujem, vlastný framework si môže vytvoriť len naozaj skúsený programátor. Ostatní, študovať Laravel a Symfony.

jablon

Re:Jednoduchý framework PHP
« Odpověď #33 kdy: 18. 01. 2019, 07:47:07 »
Citace
Hned první věc kterou najde google na dotaz php rest api je tento tutoriál:

https://www.codeofaninja.com/2017/02/create-simple-rest-api-in-php.html

Žádný framework to nepoužívá, a nic složitého tam taky není.

Nič zložitého to možno nie je, pretože tak veľa ešte treba dopracovať.
Ten tutoriál je plný chýb. Začiatočník by rozhodne nemal začínať na čistom PHP (iba ak pre učenie), mal by začať so Symfony alebo Laravel. Svoj vlastný framework/aplikáciu bez frameworku si môže dovoliť len naozaj pokročilý programátor. Autor hore uvedeného tutoriálu ním zatiaľ nie je, má sa čo učiť. Námatkovo vyberiem chyby.


Kód: [Vybrat]
// specify your own database credentials
private $host = "localhost";
private $db_name = "api_db";
private $username = "root";
private $password = "";
public $conn;

Configuračné dáta sa dávajú zvlášť do súborou. Navyše, uloženie účtu a hesla treba riešiť zvlášť. Heslo treba tiež
samozrejme zakryptovať.

Kód: [Vybrat]
try{
        $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
         $this->conn->exec("set names utf8");
    }catch(PDOException $exception){
         echo "Connection error: " . $exception->getMessage();
}


Pokiaľ viem, v PHP by sa takto nemali riešiť výnimky. Majú sa nechať vybublať. A keď už ich zachytávame, tak ich nevypisujeme, ale logujeme. Nastaviť logovanie a všetko s tým spojené je fuška.

Kód: [Vybrat]
header("Access-Control-Allow-Origin: *");

Bezpečnostná chyba.

Kód: [Vybrat]
$query = "SELECT
            id, name, description
        FROM
            " . $this->table_name . "
        ORDER BY
            name";
 
$stmt = $this->conn->prepare( $query );
$stmt->execute();

Toto tiež nevyzerá dobre, SQL príkazy sa nesmú takto spájať. Aj keď v tomto prípade zrejme nedôjde k SQL Injection, takto programovať je bezpečnostné riziko.

Kód: [Vybrat]
$keywords=isset($_GET["s"]) ? $_GET["s"] : "";

Toto je nedostatočná validácia.

Frameworku sú tu z určitého dôvodu. Aby sa predchádzalo chybám a znovuvynaliezaniu kolesa. Opakujem, vlastný framework si môže vytvoriť len naozaj skúsený programátor. Ostatní, študovať Laravel a Symfony.

Přesně. Těch chyb je tam hodně. Nadruhou stranu nesouhlasím s tím, že by měl začátečník začít právě se Symfony. Je tam hodně věcí, které vám zatočí hlavu i když jste senior. Doporučoval bych FW, který není postavený nad Symfony, a to Laravel a Lumen rozhodně není. Nette možná ...

PsychoIT

Re:Jednoduchý framework PHP
« Odpověď #34 kdy: 18. 01. 2019, 12:18:12 »
Odvážní jedinci mohou zkusit Haxe: https://haxe.org/

Jeden jazyk, který se mimojiné kompiluje jak do JavaScriptu, tak do PHP. Podpora PHP včetně bugfixů se rapidně rozvíjí ve verzi 4 která je sice zatím jen preview, ale pokud to funguje tak to funguje.

Haxe je jazyk velmi podobný ActionScriptu (Flash), a s vhodnými knihovnami jej dokáže nahradit. Rychlost transpilace je ve srovnání s TypeScriptem velmi rychlá, proběhne v podstatě ihned.

Už jsem na to kdysy dávno narazil. Setkal jsi se někdy s reálným nasazením?

Kterak se TiVo flashe zbavovalo...
https://haxe.org/blog/tivo-using-haxe-to-improve-user-experience-for-millions-of-customers/


Lelek

Re:Jednoduchý framework PHP
« Odpověď #35 kdy: 18. 01. 2019, 14:26:59 »
Povim Vam pribeh, kterak jsem se rozhodl prepsat jeden obstarozni web. Stejne jako zakladatel vlakna jsem si rekl, ze prece nebudu pouzivat velky tezkopadny framework jako je prave treba Symfony. Vzdyt vzit neco maleho a pridat si v dnesni dobe par komponent pres composer nebude hracka...

Po dvou tydnech (vecerni) prace jsem stale nezacal na samotne aplikaci. Stale resim jak udelat to ci ono (preklady, routovani, pristup k DB, ...) - vse propojit. Spousta hodin psani adapteru a vselijakych propojovatek. Stale nejsem hotov.

... vlastne jsem. Kaslu na to a sahnu prave po Symfony - budu se moct ode dne 0 zaobirat programovanim toho, co chci, a ne toho kolem.

-----

Ad Haxe: nerad bych vypadal jako zakladac flamewaru, ale Haxe patri do minuleho desetileti. Dnes se (ke vsi smule) pouziva JavaScript.

Sunar

Re:Jednoduchý framework PHP
« Odpověď #36 kdy: 18. 01. 2019, 19:20:31 »
Já osobně žádný framework nepoužívám, vystačím si se znalostmi jazyka a vlastní sbírkou funkcí, které jsem si za ty roky vytvořil. Více toho nepotřebuji. V první řadě nestojím o bloatware, kterému nerozumím do posledního písmenka a který zbytečně žere zdroje. Proto si radši dám práci s  lastní tvorbou. Myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.

Re:Jednoduchý framework PHP
« Odpověď #37 kdy: 18. 01. 2019, 22:40:38 »
Já osobně žádný framework nepoužívám, vystačím si se znalostmi jazyka a vlastní sbírkou funkcí, které jsem si za ty roky vytvořil. Více toho nepotřebuji. V první řadě nestojím o bloatware, kterému nerozumím do posledního písmenka a který zbytečně žere zdroje. Proto si radši dám práci s  lastní tvorbou. Myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.
Což ocení každá firma, která Tě zaměstná...

Jano7

Re:Jednoduchý framework PHP
« Odpověď #38 kdy: 19. 01. 2019, 19:07:14 »
Já osobně žádný framework nepoužívám, vystačím si se znalostmi jazyka a vlastní sbírkou funkcí, které jsem si za ty roky vytvořil. Více toho nepotřebuji. V první řadě nestojím o bloatware, kterému nerozumím do posledního písmenka a který zbytečně žere zdroje. Proto si radši dám práci s  lastní tvorbou. Myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.
Což ocení každá firma, která Tě zaměstná...

Pokiaľ pracujete na svojej aplikácii, tak nech sa páči. Ale v prípade aplikácie pre tretiu stranu si takýto prístup neviem predstaviť. Kto bude upgradovať tú aplikáciu, kto sa postará o bug a security opravy?
Ak odíde programátor, ktorý si vytvoril svoju vlastnú sadu funkcií, tak programátor, ktorý ho nahradí, si to musí najprv naštudovať.

V prípady napr. Symfony frameworku máte pevne stanovený roadmap, pravidelné bug a security opravy, výbornú dokumentáciu. Všetko je predvídateľné a profesionálne. Jedného Symfony programátora nahradíte ľahšie iným Symfony programátorom. Zdrojové kódy sú k dispozícii na Githube, kto sa chce realizovať, môže si vytvoriť vlastnú Symfony komponentu.

Sunar

Re:Jednoduchý framework PHP
« Odpověď #39 kdy: 19. 01. 2019, 21:48:19 »
Já osobně žádný framework nepoužívám, vystačím si se znalostmi jazyka a vlastní sbírkou funkcí, které jsem si za ty roky vytvořil. Více toho nepotřebuji. V první řadě nestojím o bloatware, kterému nerozumím do posledního písmenka a který zbytečně žere zdroje. Proto si radši dám práci s  lastní tvorbou. Myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.
Což ocení každá firma, která Tě zaměstná...
Ta, co mě zaměstnává, to oceňuje už přes 15 let. Vývoj začal v roce 2002, nasazeno to bylo v roce 2003. Kde v té době bylo symfony? A za svuj kratší život má symfony už čtvrtou major verzi (kdy přestala být podporovaná ta první) a visí na spoustě dalších projektů, takže otázka zní, kde bude za dalsich 15 let? Jak jsem napsal, myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.

Kormorán

Re:Jednoduchý framework PHP
« Odpověď #40 kdy: 20. 01. 2019, 09:51:41 »
Vám se to určitě vyplatilo, protože pokud máte 15 let vendor lock-in jako kráva, tak i kdybyste poslal šéfa a celé vedení firmy do prd ele, tak Vás stejně vyhodit nemůžou, protože nikoho jinýho by na spravování té aplikace nesehnali. Protože každý rozumný programátor, kterýho by tam vzali by hned vzal roha, než aby se staral o nějakej legacy projekt bez frameworku.

Sunar

Re:Jednoduchý framework PHP
« Odpověď #41 kdy: 20. 01. 2019, 17:50:11 »
Vám se to určitě vyplatilo, protože pokud máte 15 let vendor lock-in jako kráva, tak i kdybyste poslal šéfa a celé vedení firmy do prd ele, tak Vás stejně vyhodit nemůžou, protože nikoho jinýho by na spravování té aplikace nesehnali. Protože každý rozumný programátor, kterýho by tam vzali by hned vzal roha, než aby se staral o nějakej legacy projekt bez frameworku.
Není to legacy, ale živý a rozvíjející se projekt, děláme na tom tři, zdrojáky a dokumentace jsou plně k dispozici a k jejich zvládnutí stačí umět php a js/html/css. Ale není to nic pro lepiče kódu, kteří umí akorát k sobě lepit komponenty frameworku, na všechny požadavky, které nejsou náhodou frameworkem pokryté odpovídají - to nejde a když se objeví nějaká chyba, tak se modlí, aby ji někdo co nejrychleji opravil.

Kormorán

Re:Jednoduchý framework PHP
« Odpověď #42 kdy: 20. 01. 2019, 21:10:41 »
Ne, díky. V 21. století stavět PHP projekt bez frameworku je nesmysl. :) Ono i kdyby ten Váš kód byl bezpečný jako je ten na úrovni Nette nebo Symfony (o čemž pochybuji, když oni mají security audity a další věci), tak stále je tam problém jako kráva v tom, že když přijde nový vývojář a uvidí Symfony, tak ví, že když dostane za úkol upravit routu, tak se podívá sem do tohohle souboru a upraví to. To samé v Nette. U něčeho dělaného na koleni tohle vědět nebude a tak bude v lepším případě číst dokumentaci a v horším zkoumat kód. :)

A vím o čem mluvím, pár takovýhle sraček bez FW jsme už ve firmě předělávali buď do Nette nebo do Symfony, podle toho,  co preferoval klient (Nette pro ryze české projekty, Symfony pro ty, kde byl potenciál i pro zahraničí).

BoneFlute

  • *****
  • 1 981
    • Zobrazit profil
Re:Jednoduchý framework PHP
« Odpověď #43 kdy: 20. 01. 2019, 21:35:06 »
Ta, co mě zaměstnává, to oceňuje už přes 15 let. Vývoj začal v roce 2002, nasazeno to bylo v roce 2003. Kde v té době bylo symfony?
Jenže to je něco jiného. Dnes kvalitní FW jsou.

A za svuj kratší život má symfony už čtvrtou major verzi (kdy přestala být podporovaná ta první) a visí na spoustě dalších projektů, takže otázka zní, kde bude za dalsich 15 let? Jak jsem napsal, myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.
Nevyplatí. Proč by mělo? Uveďte konkrétní výhody.

Jako dobře, pokud budete tvrdit, že žádný FW nemá požadované funkčnosti, protože vy máte tento a tento skvělej nápad, který žádné FW nemá, a naroubovat se na to nedají, tak fajn, takto by se dalo bavit. Ale vytvářet si vlastní řešení jen proto, aby bylo vlastní?! Ne, zcela určitě ne.

Jano7

Re:Jednoduchý framework PHP
« Odpověď #44 kdy: 20. 01. 2019, 22:24:12 »
Citace
Ta, co mě zaměstnává, to oceňuje už přes 15 let. Vývoj začal v roce 2002, nasazeno to bylo v roce 2003. Kde v té době bylo symfony? A za svuj kratší život má symfony už čtvrtou major verzi (kdy přestala být podporovaná ta první) a visí na spoustě dalších projektů, takže otázka zní, kde bude za dalsich 15 let? Jak jsem napsal, myslím si, že z hlediska dlouhodobého udržování aplikace je to lepší řešení a vyplatí se to.

V roku 2002 sa všetci len učili tvoriť webové stránky. Symfony tu bude o 15 rokov naisto. Každým rokom sa framework zlepšuje spolu s PHP jazykom a ekosystémom a komunita sa zväčšuje.

Citace
Ale není to nic pro lepiče kódu, kteří umí akorát k sobě lepit komponenty frameworku, na všechny požadavky, které nejsou náhodou frameworkem pokryté odpovídají - to nejde a když se objeví nějaká chyba, tak se modlí, aby ji někdo co nejrychleji opravil.

Nechápem, keď sa niekto díva na programátorov využívajúcich framework zvysoka. V skutočnosti musí mať takýto kóder rozsiahle znalosti a musí sa neustále vzdelávať. Keď vyvíjate aplikácie nemáte na nízkoúrovňové veci ako sú napr. transakcie, parsovanie requestu, budovanie security/databázovej vrstvy atď absolútne čas. O tom je predsa deľba práce.
Fabien Potencier a spol. kódia Symfony framework (a robia to dobre), ostatní kódia aplikácie pomocou Symfony.
V súčasnosti už ťažko nájdeme oblasť, ktorú Symfony alebo niektorý externý PHP modul nepokrýva. A keď narazíte na chybu, tak na 99% sa s ňou už niekto pred vami stretol a na webe nájdete odpoveď.

Citace
Ono i kdyby ten Váš kód byl bezpečný jako je ten na úrovni Nette nebo Symfony (o čemž pochybuji, když oni mají security audity a další věci)

Európska komisia zaradila Symfony do svojho zoznamu pre bug hunting program; medzi 15 najdôležitejších softwérov. Takže pochybuje že bude nejaký in-house projekt bezpečnejší ako Symfony.