Skip to content

Instantly share code, notes, and snippets.

@VaclavSir
Last active December 19, 2015 23:08
Show Gist options
  • Save VaclavSir/6032422 to your computer and use it in GitHub Desktop.
Save VaclavSir/6032422 to your computer and use it in GitHub Desktop.
Takový nápad...
{assertVariables
number => float,
message => string,
property => 'Hell\Model\Property',
identity => 'Nette\Security\IIdentity',
arrayOrIterator => 'Model\Item[]',
optionalParameter => 'SomeType|NULL'
anyType => mixed,
anyTypeOrNull => 'mixed|NULL',
anyArrayOrIterator => 'mixed[]'
}

Jak by to fungovalo

Pokud by některá z vyjmenovaných proměnných neexistovala nebo nebyla požadovaného typu, makro by zařvalo chybou E_NOTICE. Zápis typ[] by akceptoval pole a iterátory, přičemž by vždycky zkontroloval typ všech prvků (kromě mixed[], který by bylo prostě is_array($x) || $x instanceof Traversable).

Motivace

  • Rozšíření Latte o volitelnou typovou kontrolu.
  • Občas na začátku šablony nebo bloku ty očekávané parametry beztak vypisuju (obvykle nějakým pseudo-PHPDoc zápisem).
  • Nepopírám inspiraci Closure Templates. Nechápu, že podobný mechanizmus ještě nemají všechny ostatní šablonovací systémy.

Využití

  • Na začátku šablony.
  • Na začátku bloku.
  • Kdekoli, kde si nejsem 100% jistý typem nějaké proměnné.

RFC

Chceme to implementovat, nebo to je blbost? Nebo už něco takového existuje a já to neznám?

Co si o tom myslíte vy? Napište mi do komentářů. :-)

@PetrP
Copy link

PetrP commented Jul 22, 2013

V připadě block/define by se parametry/typy dali zapisovat jako další parametr (v nette lze něco jako přetížit macro).

{define #block number => float, message => string}

{/define}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment