Formátování SQL v PHP stringu rubrika: Programování: PHP
Dotaz aktualizován
Zdravím,
jakým způsobem formátujete SQL kód v PHP stringu?
Momentálně formátuji cca následovně.
class exampleClass { /* Pro úplnost: - SQL se snažím vždy odsazovat dle ostatního kódu, prakticky to tedy bývá minimálně 8 (+ název proměnné a rovnítko + 2) mezer od okraje - v některých kódech jsem viděl heredoc syntax, kdy je kód vždy zarovnán úplně k levému okraji, to se mi moc nelíbí. */ public function exampleMethod() { // u velmi jednoduchých dotazů používám one-liner, proměnná nemá smysl - pořád je to přehledné $result1 = dibi::query("SELECT foo FROM bar"); /* Pokud by se nemělo celé volání vejít do 80 znaků a zároveň není dotaz nikterak komplikovaný, ještě pořád ho zápíši přímo do volání sql metody, zde ale přichází první necelistvost. Občas to zapíši takhle (A2): */ dibi::query("SELECT foo FROM bar WHERE xyz > aosd LIMIT 0, 1" ); // .. jindy zase takhle (B2) dibi::query(" SELECT foo FROM bar WHERE xyz > aosd "); /* U dlouhých/složitých dotazů pak používám vždy proměnnou, ale opakuje se zde stejný problém: - dát SELECT/INSERT/UPDATE na nový řádek, nebo na řádek s proměnnou? A ukončení dotazu? Středník? */ // $sql2 = "SELECT FROM foo WHERE bar ... LIMIT 0, 1"; // dalším "problémem" jsou závorky, např. u insertů $sql3 = " INSERT INTO tbl_name ( a,b,c ) VALUES ( 1,2,3,4,5,6,7,8,9 ) "; }
Rád bych se držel nějakých pravidel typu "takhle to dělá většina". Samotné PHP se snažím formátovat ve stylu PHP-FIG/PSR.
Najde se spoustu různých dalších SQL (v PHP) konstrukcí, nemá je zde cenu všechny vypisovat. O co mi především v tomto dotazu šlo je především dopátrat se nějakého předpisu, který je běžný, vytvořit si nějaký systém, jak to psát konzistentně.
Z Vašich odpovědí mi došlo, že u SQL žádný standart tak úplně neexistuje.
Mým cílem je především to, aby kód který napíšu byl co nejčitelnější pro co největší procento programátorů okolo - tedy kolegů, spolupracovníků apod.
Co se týče různých abstrakcí nad SQL, jsou samozřejmě případy kde se
to hodí, ale taky případy, kdy je to zbytečné. I když na první pohled se mi Doctrine/DibiFluent/whatever líbilo, někdy mi přijde
přehlednější/účelnější napsat si to SQL přímo. A o tomto je toto vlákno.
Všem děkuji za reakce, z některých příspěvků jsem načerpal inspiraci.
Abych se vyjádřil i k Vašim postům, osobně se mi nejvíc líbí zápisy Kita, onelooka a kohvena.
Díky!
Formatovaní SQL je subjektivní. Neexistuje převažující zápis - a teď už mi to ani nepřijde divné. Ve většině firem se ustálí typická sada a vzory SQL dotazů, a dovedu si představit různý zápis, tak aby výsledek byl co nejčitelnější. Osobně preferuji kompaktnější zápis, který definoval Joe Celko - nemám rád vertikální nebo horizontální nudle:
SELECT DISTINCT pilot FROM PolotSkills AS PS1 WHERE NOT EXISTS (SELECT * FROM Hangar WHERE NOT EXISTS (SELECT * FROM PilotSkills AS PS2 WHERE PS1.pilot = PS2.pilot AND PS2.plane = Hangar.plane ) );
Pro zobrazení všech 7 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře