Přeji pěkný nový rok 2015!
- David Grudl
- Nette Core | 8228
Přeji všem fandům Nette super nový rok 2015! A ptám se: kam posuneme Nette v tomto roce?
- Jan Tvrdík
- Nette guru | 2595
Rozdělíme nette/application a zničíme nette/reflection. Taky by mohly vzniknout nějaké anglické screencasty, když to hromada lidí pořád slibuje.
- newPOPE
- Člen | 648
Kedze je FW rozdeleny do samostatnych celkom tak by nebolo zle (uz dlhsie to mam v hlave) tlacit samotne celky do sveta.
Ako priklad: Modul Latte pre Zend2, Symfony, Laravel. Pripadne mat „podporu“ priamo v Latte repo.
Sem tam to sledujem ale nic co by ma nejak vytrhlo zo stolicky som nezaregistroval. Dat dokopy clanok a pustit to na sitepoint.com (fluentPDO (sk projekt) sa tam dostal tak nejak sam http://www.sitepoint.com/…d-fluentpdo/).
Momentalne nic konkretne nemam skor mi ide len o tom zozbierat napady a idei.
- Milo
- Nette Core | 1283
Já jsem si nakázal nezačínat nic nového, dokud neuzavřu co jsem kde načal :-)
Co potom přesně nevím. Nette FW je teď ve stavu, který mým potřebám vyhovuje. Zkusil bych implementovat source maps pro Latte, to mě občas trápí. A mám nápad na rozšíření validátorů.
Také delší dobu koketuji s myšlenkou generátoru sandbox aplikace as-you-wish.
No ono je těch nápadů vlastně mraky :-)
- Zax
- Člen | 370
Mě napadá pár takových drobností, které by mohly dost zpříjemnit používání Nette:
- Rád bych viděl zavedený IFormFactory: po vzoru
komponent, formuláře by IMO bylo lepší standardně vyrábět přes továrnu,
kterou si injektneme, než používat všude
new Form
. Nezřídka je nutné třeba upravit renderer globálně pro celou aplikaci, nebo třeba líné a zapomnětlivé kůže jako já si do továrny mohou přidataddProtection()
. No a díky automaticky generovaným továrnám není potřeba výchozí implementaci jakkoliv řešit :-) - Bylo by celkem cool mít v základu možnost používat aliasy v routování: mám dost fetiš na komponenty, jenže persistentní parametry v komponentách nejsou zrovna router-friendly, zvlášť když se do toho někde uprostřed přimíchá Multiplier, viz https://forum.nette.org/…2-characters#…
- Nette\Caching\**IStorage** (EDIT: to je bug že se to nezobrazuje tučně?)
bych přejmenoval na ICacheStorage: pokud to nedělám celou
dobu blbě, tak právě IStorage je to, co injektujeme, jenže v kombinaci s
use
v hlavičce je IStorage dost nečitelný (jakej storage? Pro cache? Nebo úložiště pro obrázky? …). A taky jsem se už několikrát přistihl, že jsem začal psát „ICacheSto…“ a pak mi to docvaklo :-) Jasně, je to fakt blbost a chápu, když se to nezmění kvůli zpětné kompatibilitě, ale tak je to taky nápad. - No a na závěr jedno „probably not gonna happen“: pohledy
v komponentách s automatickým dohledáváním šablon, možnost zapnout
automatickou invalidaci snippetů v komponentách (vyhnout se nutnosti všude
psát „if is ajax blabla else redirect“) a metoda
forward()
(nebo možnáajaxRedirect()
?), která přesměruje bez nového requestu a nezruší invalidaci snippetů (což bohužel$presenter->forward()
dělá). Nebo úplně ideálně rovnou metodago()
(lepší název mě nenapadl), která koukne, jestli jde o ajax a podle toho buď normálně přesměruje a nebo provedeajaxRedirect()
. Sám už něco podobného mám vyrobené a skoro si bez toho komponenty nedokážu představit, ale „oficiální“ řešení by bylo bezesporu lepší i oblíbenější, než můj bastl na koleni.
EDIT: Jo a samozřejmě všechno nejlepší do nového roku ;-)
Editoval Zax (3. 1. 2015 16:44)
- Filip Procházka
- Moderator | 4668
@Zax
- 1 – pošleš pull? :)
- 3 – myslím že to není potřeba
- 4 – napiš to a udělej z toho rozšíření :) je to easy
- Zax
- Člen | 370
@FilipProcházka
ad 1.: Klidně pošlu, ale dřív jak zítra to nebude :-P a ještě předtím bych se chtěl ujistit, co by bylo nejlepší:
- Dát to do nette/application
(
@return Nette\Application\UI\Form
) – osobně mi přijde asi nejlepší - Dát to do nette/forms (
@return Nette\Forms\Form
) – osobně mi přijde zbytečné, běžnému uživateli Nette to je asi k ničemu - Obojí – osobně by mi přišlo zbytečně matoucí
Souhlas že a) je nejlepší?
ad 4.: Už jsem zkoušel (https://github.com/…x/zaxcontrol), ale je to jen vytržené z mé (staré) knihovny, prakticky neupravené (jsou tam věci, které tam spíš nepatří), neudržované, nejsou k tomu testy (jsou v té staré knihovně) a navíc je dost těžké vyhovět všem a zároveň sobě (co mně přijde intuitivní by někdo jiný mohl považovat za velké WTF, což zrovna u téhle komponenty stopro platí). Ale když o to bude zájem, tak to rád přepracuji.
Editoval Zax (3. 1. 2015 17:18)
- Zax
- Člen | 370
Je lepší, když kód závisí na interfacu než na konkrétní implementaci, protože ti to umožní implementaci podle potřeby změnit, aniž bys musel upravovat závislosti.
Př.: já si třeba napíšu nějakou továrničku na formuláře, ale pak přijde kolega a řekne „hele moje továrna je lepší“ a já to najednou chci vyměnit – no tak si ji prostě nastavím do configu aby se mi autowirovala a mám hotovo. Díky tomu, že oba implementujeme stejný interface z Nette, já nemusím vůbec sahat do kódu, abych si vyžádal správnou továrničku, protože nezávisím na své/kolegově/ničí implementaci, ale na obecném interfacu.
A klidně to může vracet BaseForm, to tomu nijak nebrání ;-)
Samo že si ten interface můžu napsat sám a pak vyžadovat, ale potom musím kolegy s tím interfacem seznámit a říct jim „hele, jestli někdy budeš dělat továrnu na formuláře, měla by implementovat můj interface“. Když je to rovnou v Nette, tak není vůbec co řešit :-)
- David Grudl
- Nette Core | 8228
Rozhodně je často vhodné v kódu nahradit new Form
za
formFactory->create()
, totéž platí o celé řadě dalších
objektů, včetně třeba new DateTime
, ale nezdá se mi, že by
tyto obecné rozhraní měly být součástí frameworku. To spíš
bootstrapu.
- Vojtěch Dobeš
- Gold Partner | 1316
Zax napsal(a):
3. Nette\Caching\**IStorage** (EDIT: to je bug že se to nezobrazuje tučně?) bych přejmenoval na ICacheStorage: pokud to nedělám celou dobu blbě, tak právě IStorage je to, co injektujeme, jenže v kombinaci s
use
v hlavičce je IStorage dost nečitelný (jakej storage? Pro cache? Nebo úložiště pro obrázky? …). A taky jsem se už několikrát přistihl, že jsem začal psát „ICacheSto…“ a pak mi to docvaklo :-) Jasně, je to fakt blbost a chápu, když se to nezmění kvůli zpětné kompatibilitě, ale tak je to taky nápad.
Na toto je snadný trik :). Stačí si dát kratší use:
use Nette\Caching;
public function __construct(Caching\IStorage $cacheStorage)
{
...
Vypadá to moc pěkně :).
- Zax
- Člen | 370
@bazo Právěže pokud ti stačí ta úplně nejjednodušší
implementace (de facto new Form
), tak to funguje naprosto stejně
jak s továrničkami na komponenty – Nette ti tu základní implementaci
vygeneruje.
Já to používám třeba i na továrny pro Doctriní entity – ano,
většinou stačí new Entity
, tudíž si vytvořím samotný
interface a zbytek nechám na Nette, ale občas se stane, že chci entitu nějak
doinicializovat (a tato potřeba se klidně může objevit až poté, co je
půlka projektu napsaná), tak si napíšu vlastní implementaci, změním
řádek v configu (resp. jen odmažu „I“ z názvu) a mám hotovo, nemusím
lovit kde všude v kódu to musím přepsat.
Proto mě taky napadlo přidat IFormFactory do Nette – základní implementace v Nette být vůbec nemusí, nabušíš třeba 50 funkčních formulářů a až potom si uděláš implementaci a řešíš, jak těch 50 formulářů má vypadat.
Já takto prostě pracuji radši a vidím v tom jen potenciální výhody za naprosto minimální cenu, ale samozřejmě nechci to nikomu vnucovat, pokud se to někomu zdá zbytečné, mně to vlastně může být celkem fuk ;-)
@vojtech.dobes Tak samozřejmě, jenže IDEčka mají tendenci při automatickém doplňování do kódu vrážet nejkratší možný název a do klauzule use ten nejdelší.. a psát ručně něco, co si můžu nechat vygenerovat, mě nikdo jen tak nedonutí >:-D Ale je to fakt prkotina, neřešme to, prosím… s Nette jsem holt natolik spokojený, že mě pro zlepšení nic jiného než prkotiny nenapadá :-) Omlouvám za vytáhnutí tak hloupého tématu.
- Croc
- Člen | 270
Zdravím, chtěl bych se zeptat, jak to vypadá s budoucím vývojem a
podporou Nette? Koukal jsem na github na graf commitů: https://github.com/…contributors?…
a je zde vidět že se v Nette cca 7měsiců prakticky nic nestalo.