Máte někdo zkušenosti s Yii2? rubrika: Programování: PHP

6 Žížala
položil/-a 7.1.2016

Předně ahoj v novém roce xD
Testuji před uzavřením výběru frameworků Yii2 a narazil jsme na pár ... podivností. Je to framework mající spoustu věcí vyřešených, ale na druhou stranu je jeho logika poměrně zvláštní a restriktivní. Hraji si s ním teprve 3. den, ale už jsem narazil na pár věcí, které mě iritují. Např. nefunkční echo ve view...

Takže se ptám, vyplatí se se v něm dělat? Resp. jak je dlouhá učební křivka, protože mě přijde, že mám docela problém se s ním sžít. Je tam víc podivností jako je to echo? Jaké jsou jeho slabiny v kódování?

Hodilo by se mě porovnání s CodeIgniter a Doctrine, ev. Phalconem.

Díky za konstruktivní příspěvky k tématu (ahoj kite xD)

EDIT:
Záhada vyřešena
Pokud použiji ve view tento zápis, tak to nefunguje

<?
echo $a;
?>

A takto jo ...

<?php
echo $a;
?>

Nějak nevím co na to říct ...

Komentáře

  • Kit : Ahoj Žížalo, opravdu chceš ode mne názor na framework, o kterém jsem nikdy neslyšel? Příkaz echo mám jen jeden v celé aplikaci a není to ve view. 7.1.2016
  • michal.svojanovsky : No jsem natvrdlý, ale hlava mi nebere, proč bych psal ve view "echo", když to celý se má zobrazit. Echo mám před metodou na zobrazení šablony přes šablonovací systém. 7.1.2016
  • Žížala : Třeba proto, že mám ve view rozhodovací podmínku, že se něco má za určitých okolností zobrazit a něco ne... A šablony nepoužívám na jednorázový kód. Nebo proto, že potřebuji vypsat nějakou konstantu. A nechodí ve view ani var_dump. 7.1.2016
  • jiri.knesl : echo (var_dump) v šabloně se často hodí na nějaké debug výpisy. 7.1.2016
  • roman.hocke : Žádný zkušenosti s Yii nemám, ale hádám, že to echo sežere output buffering. Zkus za to echo dát ob_flush() a flush(). 7.1.2016
  • Kit : Symbol <? se už dávno nemá používat, místo něj pouze <?php echo $a;?> nebo zkráceně <?= $a ?> 7.1.2016
  • fyisch : Já používám ve view ten zkrácený zápis <?= $a ?>. Pro výpis proměnných slouží v yii2 helper yii\helpers\VarDumper. Používá se takto: <?php VarDumper::dump($a) ?> 8.1.2016
  • Kit : @fyisch: K čemu ten VarDumper? To zase někdo vynalézal kolo? 8.1.2016
  • error414_1 : ja pouzivam var_dump upraveny xdebugem, kdybych mel pouzivat klasickej var_dump nebo print_r tak zesilim. 10.1.2016
  • Kit : @error414_1: Proč? Nelíbí se ti výstup? Ukaž nám pro porovnání, jaký výstup si děláš. Sám dělám nejraději echo $object; ale na něco občas ten print_r() použít musím. 10.1.2016
  • fyisch : @Kit: VarDumper je podle mně nástroj pro ty, co z nějakých důvodů nemohou použít Xdebug. V dokumentaci http://www.yiiframework.com/doc-2.0/yii-helpers-vardumper.html čtu, že oproti var_dump a print_r (čehož je VarDumper náhražkou) umí lépe zobrazit rekurzivně odkazované objekty. Někdo zde může např. ocenit i další metody, jako je dumpAsStrig() nebo export(). Já osobně se držím Xdebugu. Myslím, že vymýšlení kola není doménou Yii2. 15.1.2016
  • error414_1 : no je to hezky v barvickach a da se to nastavovat http://xdebug.org/docs/display , take to umi obarvovat do CLI. Take xdebug rozisruje moznosti debug_zval takze ti to pomuze pri ladeni vykonu. 11.1.2016
  • Kit : @error414_1: Díky, vypadá to hezky. Zkusil sis i var_export()? 11.1.2016
  • error414_1 : abych se priznal tak var_export nepouzivam, zvykl jsem si na pouzivani var_dumpu s xdebugem a tak nejak na tom stagnuju. 23.3.2016
odkaz
7 kohven
odpověděl/-a 7.1.2016
 
upravil/-a 7.1.2016

Mám zkušenost pouze s Yii 1. Prý je to inspirováno Ruby on rails, ale neznám je, tak to nedokážu posoudit.

echo ve view v jedničce jde. Jsou to normální php skripty.
Hodně se používají behaviors. To má asi nejblíže k php traits, ale tady je to řešeno na úrovni frameworku. Mě osobně behaviors moc nevyhovují.
Hodně věcí se řídí podle pojmenování. Počítá se se správně pojmenovanými cestami a soubory. "Věci" (např. view) se pak snáze adresují. To je příjemné.
Naopak mi hodně vadilo, že se v configách všude používají arrays. Mám radši třídu s vlastnostmi, kdy funguje napovídání v ide a při překlepu to spadne včas.
Pro db je tam active record. Je docela použitelný, ale nejsem moc náročný. Jsem zvyklý řešit složitější věci s daty ve stored procedures.

Ale vše platí pro jedničku. Yii2 jsem ještě ani nestáhnul, ale předpokládám, že behaviors zůstaly.

Edit: Kit mi připomněl. Ty ActiveRecord v Yii mají nepříjemnou vlastnost, že když se nepovede uložit záznam, tak nenastane žádná výjimka, ale vrátí se false a chybu si musím vyčíst někde z objektu. V transakci v try catch bloku je to docela zrádné a musí se na to myslet.

Komentáře

  • Žížala : Jojo pořád tam jsou.. Ty se teď hodně používají v posledních verzích různých frameworků. Jsou i v mém oblíbeném Phalconu... 7.1.2016
  • Kit : Ve dvojce se traits hojně používají. Napovídání mi funguje i na elementy arrays. 7.1.2016

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.