Skip to content

Commit

Permalink
used short array syntax
Browse files Browse the repository at this point in the history
  • Loading branch information
dg committed May 22, 2016
1 parent c61c41c commit 005736d
Show file tree
Hide file tree
Showing 46 changed files with 378 additions and 378 deletions.
16 changes: 8 additions & 8 deletions doc/cs/access-control.texy
Expand Up @@ -63,10 +63,10 @@ Důvod posledního odhlášení prozradí metoda `$user->getLogoutReason()`, kte
Aby však příklad s přihlášením fungoval, je potřeba napsat objekt, který ověří uživatelské jméno a heslo. Říká se mu **autentikátor**. Jeho triviální podobou je třída [api:Nette\Security\SimpleAuthenticator], která dostane v konstruktoru seznam uživatelů a hesel jakožto asociativní pole:

/--php
$authenticator = new Nette\Security\SimpleAuthenticator(array(
$authenticator = new Nette\Security\SimpleAuthenticator([
'john' => 'IJ^%4dfh54*',
'kathy' => '12345', // Kathy, this is a very weak password!
));
]);
$user->setAuthenticator($authenticator);
\--

Expand Down Expand Up @@ -126,7 +126,7 @@ class MyAuthenticator extends Nette\Object implements NS\IAuthenticator
throw new NS\AuthenticationException('Invalid password.');
}

return new NS\Identity($row->id, $row->role, array('username' => $row->username));
return new NS\Identity($row->id, $row->role, ['username' => $row->username]);
}
}
\--
Expand Down Expand Up @@ -280,7 +280,7 @@ Za zmínku stojí metoda `getRoleParents()`, která vrací pole se všemi přím

/--php
$acl->roleInheritsFrom('administrator', 'guest'); // TRUE
$acl->getRoleParents('administrator'); // array('registered')
$acl->getRoleParents('administrator'); // ['registered']
\--

Nyní je čas nadefinovat i **seznam zdrojů, ke kterým mohou uživatelé přistupovat**.
Expand All @@ -303,14 +303,14 @@ A teď to nejdůležitější. Samotné role a objekty by nám byly k ničemu, m
// nejprve nikdo nemůže dělat nic

// nechť guest může prohlížet obsah veřejné části, hlasovat v anketách
$acl->allow('guest', array('article', 'comment', 'poll'), 'view');
$acl->allow('guest', ['article', 'comment', 'poll'], 'view');
$acl->allow('guest', 'poll', 'vote');

// registrovaný dědí právo od guesta, ale má i právo komentovat
$acl->allow('registered', 'comment', 'add');

// administrátor může prohlížet a editovat cokoliv
$acl->allow('administrator', Permission::ALL, array('view', 'edit', 'add'));
$acl->allow('administrator', Permission::ALL, ['view', 'edit', 'add']);
\--

Co když chceme někomu **zamezit do určitého zdroje přístup**?
Expand Down Expand Up @@ -374,11 +374,11 @@ $acl->allow('admin', 'backend');
$acl->deny('guest', 'backend');

// případ A: role admin má menší váhu než role guest
$acl->addRole('john', array('admin', 'guest'));
$acl->addRole('john', ['admin', 'guest']);
$acl->isAllowed('john', 'backend'); // FALSE

// případ B: role admin má větší váhu než guest
$acl->addRole('mary', array('guest', 'admin'));
$acl->addRole('mary', ['guest', 'admin']);
$acl->isAllowed('mary', 'backend'); // TRUE
\--

Expand Down
8 changes: 4 additions & 4 deletions doc/cs/ajax.texy
Expand Up @@ -31,7 +31,7 @@ Pro odesílání dat prohlížeči ve formátu JSON lze využít předpřipraven
Pokud potřebujete plnou kontrolu nad odeslaným JSONem, použijte v presenteru JsonResponse. Tím ihned ukončíte činnost presenteru a obejdete se i bez šablony:

/--php
$this->sendResponse(new JsonResponse(array('klic' => 'hodnota', ...)));
$this->sendResponse(new JsonResponse(['klic' => 'hodnota', ...]));
\--

Když chceme odeslat HTML, můžeme jednak zvolit speciální šablonu pro AJAX:
Expand Down Expand Up @@ -141,11 +141,11 @@ class HomepagePresenter extends \Nette\Application\UI\Presenter
*/
private function getTheWholeList()
{
return array(
return [
'První',
'Druhý',
'Třetí'
);
];
}

public function renderDefault()
Expand All @@ -158,7 +158,7 @@ class HomepagePresenter extends \Nette\Application\UI\Presenter
public function handleUpdate($id)
{
$this->template->list = $this->isAjax()
? array()
? []
: $this->getTheWholeList();
$this->template->list[$id] = 'Updated item';
$this->redrawControl('itemsContainer');
Expand Down
30 changes: 15 additions & 15 deletions doc/cs/arrays.texy
Expand Up @@ -28,9 +28,9 @@ $value = Arrays::get($array, 'foo', 'bar');
Klíčem `$key` může být i pole.

/--php
$array = array('color' => array('favorite' => 'red'), 5);
$array = ['color' => ['favorite' => 'red'], 5];

$value = Arrays::get($array, array('color', 'favorite'));
$value = Arrays::get($array, ['color', 'favorite']);
// vrátí 'red'
\--

Expand All @@ -49,7 +49,7 @@ $valueRef = & Arrays::getRef($array, 'foo');
Stejně jako funkce [get() | #get()] umí pracovat s vícerozměrnými poli.

/--php
$value = & Arrays::getRef($array, array('color', 'favorite'));
$value = & Arrays::getRef($array, ['color', 'favorite']);
// vrátí referenci na $array['color']['favorite']
\--

Expand All @@ -73,7 +73,7 @@ searchKey($array, $key) .{toc: searchKey()}
Vrátí pozici daného klíče v poli. Pozice je číslována od 0. V případě, že klíč nebude nalezen, vrátí funkce `FALSE`.

/--php
$array = array('first' => 10, 'second' => 20);
$array = ['first' => 10, 'second' => 20];
$position = Arrays::searchKey($array, 'first'); // vrátí 0
\--

Expand All @@ -85,9 +85,9 @@ insertAfter(&$array, $key, $inserted) .{toc: insertAfter()}
Vloží obsah pole `$inserted` do pole `$array` hned za prvek s klíčem `$key`. Pokud klíč v poli není, vkládá se na konec.

/--php
$array = array('first' => 10, 'second' => 20);
Arrays::insertAfter($array, 'first', array('hello' => 'world'));
// $array = array('first' => 10, 'hello' => 'world', 'second' => 20);
$array = ['first' => 10, 'second' => 20];
Arrays::insertAfter($array, 'first', ['hello' => 'world']);
// $array = ['first' => 10, 'hello' => 'world', 'second' => 20];
\--


Expand All @@ -97,9 +97,9 @@ insertBefore(&$array, $key, $inserted) .{toc: insertBefore()}
Vloží obsah pole `$inserted` do pole `$array` před prvek s klíčem `$key`. Pokud klíč v poli není, vkládá se na začátek.

/--php
$array = array('first' => 10, 'second' => 20);
Arrays::insertBefore($array, 'first', array('hello' => 'world'));
// $array = array('hello' => 'world', 'first' => 10, 'second' => 20);
$array = ['first' => 10, 'second' => 20];
Arrays::insertBefore($array, 'first', ['hello' => 'world']);
// $array = ['hello' => 'world', 'first' => 10, 'second' => 20];
\--


Expand All @@ -109,11 +109,11 @@ mergeTree($array1, $array2) .{toc: mergeTree()}
Rekurzivně sloučí dvě pole. Hodí se např. ke slučování stromových struktur. Při slučování se řídí stejnými pravidly jako operátor `+` aplikovaný na pole, tj. k prvnímu poli přidává dvojice klíč/hodnota z druhého pole a v případě kolize klíčů ponechá hodnotu z prvního pole.

/--php
$array1 = array('color' => array('favorite' => 'red'), 5);
$array2 = array(10, 'color' => array('favorite' => 'green', 'blue'));
$array1 = ['color' => ['favorite' => 'red'], 5];
$array2 = [10, 'color' => ['favorite' => 'green', 'blue']];

$array = Arrays::mergeTree($array1, $array2);
// $array = array('color' => array('favorite' => 'red', 'blue'), 5);
// $array = ['color' => ['favorite' => 'red', 'blue'], 5];
\--

Hodnoty z druhého pole jsou vždy přidány na konec prvního. Jako trošku matoucí se může zdát zmizení hodnoty `10` z druhého pole. Je třeba si uvědomit, že tato hodnota a stejně tak hodnota `5` v poli prvním mají přiřazený stejný numerický klíč `0`, proto ve výsledném poli je jen prvek z prvního pole.
Expand All @@ -125,9 +125,9 @@ renameKey(&$array, $oldKey, $newKey) .{toc: renameKey()}
Přejmenuje klíč v poli.

/--php
$array = array('first' => 10, 'second' => 20);
$array = ['first' => 10, 'second' => 20];
Arrays::renameKey($array, 'first', 'renamed');
// $array = array('renamed' => 10, 'second' => 20);
// $array = ['renamed' => 10, 'second' => 20];
\--

{{composer: nette/utils}}
50 changes: 25 additions & 25 deletions doc/cs/caching.texy
Expand Up @@ -146,37 +146,37 @@ S ukládáním dat do cache vznikají dva problémy. Jednak je tu pochopitelně
Platnost dat se nastavuje v okamžiku ukládání a to pomocí třetího parametru metody `save`:

/--php
$cache->save($key, $data, array(
$cache->save($key, $data, [
Cache::EXPIRE => '20 minutes', // akceptuje i sekundy nebo timestamp
));
]);
\--

Z kódu je patrné, že jsme data uložili s platností 20 minut. Po uplynutí této doby bude cache hlásit, že pod klíčem `$key` žádný záznam nemá (tj. vrátí `NULL`). Pokud bychom chtěli prodloužit dobu platnosti s každým čtením, lze toho docílit takto:

/--php
$cache->save($key, $data, array(
$cache->save($key, $data, [
Cache::EXPIRE => '20 minutes',
Cache::SLIDING => TRUE,
));
]);
\--

Šikovná je možnost nechat data vyexpirovat v okamžiku, kdy se změní určitý soubor či některý z více souborů. Toho lze využít třeba při ukládání dat vzniklých parsováním těchto souborů do cache. Pro bezproblémovou funkčnost je třeba používat absolutní cesty.

/--php
$cache->save($key, $data, array(
$cache->save($key, $data, [
Cache::FILES => 'data.yaml', // lze uvést i pole souborů
));
]);
\--

Kritérium `Cache::FILES` je samozřejmě možné kombinovat i s časovou expirací `Cache::EXPIRE` apod.

Cache může být závislá i na jiných položkách cache. Což lze využít tehdy, když ukládáme do cache třeba celou HTML stránku a pod jinými klíči její fragmenty. Jakmile se část změní, invaliduje se celá stránka.

/--php
$cache->save('page', $html, array(
$cache->save('page', $html, [
// vyexpiruje, když vyexpiruje frag1 nebo frag2
Cache::ITEMS => array('frag1', 'frag2'),
));
Cache::ITEMS => ['frag1', 'frag2'],
]);
\--


Expand All @@ -188,9 +188,9 @@ function controlExpiration($val)
return $val;
}

$cache->save($key, $value, array(
Cache::CALLBACKS => array(array('controlExpiration', 1)),
));
$cache->save($key, $value, [
Cache::CALLBACKS => [['controlExpiration', 1]],
]);
\--


Expand All @@ -200,25 +200,25 @@ Expirace pomocí tagů a priority
Velmi užitečným invalidačním nástrojem jsou tzv. tagy. Každé položce v cache můžeme přiřadit seznam tagů. Mějme třeba HTML stránku s článkem a komentáři, kterou budeme cachovat. Při ukládání specifikujeme tagy:

/--php
$cache->save($articleId, $html, array(
Cache::TAGS => array("article/$articleId", "comments/$articleId"),
));
$cache->save($articleId, $html, [
Cache::TAGS => ["article/$articleId", "comments/$articleId"],
]);
\--

Přesuňme se do administrace. Tady najdeme formulář pro editaci článku. Společně s uložením článku do databáze zavoláme příkaz `clean()`, který smaže z cache položky dle tagu:

/--php
$cache->clean(array(
Cache::TAGS => array("article/$articleId"),
));
$cache->clean([
Cache::TAGS => ["article/$articleId"],
]);
\--

Stejně tak v místě přidání nového komentáře (nebo editace komentáře) neopomeneme invalidovat příslušný tag:

/--php
$cache->clean(array(
Cache::TAGS => array("comments/$articleId"),
));
$cache->clean([
Cache::TAGS => ["comments/$articleId"],
]);
\--

Čeho jsme tím dosáhli? Že se nám HTML cache bude invalidovat (mazat) sama. Kdykoliv uživatel změní článek s ID = 10, dojde k vynucené invalidaci tagu `article/10` a HTML stránka, která uvedený tag nese, se z cache smaže. Totéž nastane při vložení nového komentáře pod příslušný článek.
Expand All @@ -227,14 +227,14 @@ $cache->clean(array(
Obdobou tagů je řízení expirace dle priority:

/--php
$cache->save($key, $value, array(
$cache->save($key, $value, [
Cache::PRIORITY => 50,
));
]);

// smažeme všechny položky s prioritou rovnou nebo menší než 100:
$cache->clean(array(
$cache->clean([
Cache::PRIORITY => 100,
));
]);
\--

A nakonec zmiňme parametr Cache::ALL, který smaže vše.
Expand Down
2 changes: 1 addition & 1 deletion doc/cs/configuring.texy
Expand Up @@ -26,7 +26,7 @@ Nejzákladnějším nastavením je to, které říká, zda aplikace běží v pr

/--php
// aktivuje laděnku pouze pro dané ip adresy
$configurator->setDebugMode(array('90.180.45.360', '90.180.45.361'));
$configurator->setDebugMode(['90.180.45.360', '90.180.45.361']);
// nebo nikomu
$configurator->setDebugMode(FALSE);

Expand Down
12 changes: 6 additions & 6 deletions doc/cs/configuring/systemcontainer.texy
Expand Up @@ -11,14 +11,14 @@ class SystemContainer extends Nette\DI\Container
public function __construct()
{
parent::__construct(array(
parent::__construct([
'appDir' => '...',
'wwwDir' => '...',
'tempDir' => '...',
'debugMode' => TRUE,
'consoleMode' => FALSE,
'environment' => 'development',
));
]);
}


Expand Down Expand Up @@ -58,7 +58,7 @@ class SystemContainer extends Nette\DI\Container
*/
public function createServiceDatabase__default()
{
$service = new Nette\Database\Connection('mysql:host=127.0.0.1;dbname=test', NULL, NULL, array('lazy' => TRUE));
$service = new Nette\Database\Connection('mysql:host=127.0.0.1;dbname=test', NULL, NULL, ['lazy' => TRUE]);
Tracy\Debugger::getBlueScreen()->addPanel('Nette\\Bridges\\DatabaseTracy\\ConnectionPanel::renderException');
Nette\Database\Helpers::createDebugPanel($service, TRUE, 'default');
return $service;
Expand Down Expand Up @@ -124,7 +124,7 @@ class SystemContainer extends Nette\DI\Container
public function createServiceNette__httpRequestFactory()
{
$service = new Nette\Http\RequestFactory;
$service->setProxy(array());
$service->setProxy([]);
return $service;
}

Expand Down Expand Up @@ -154,9 +154,9 @@ class SystemContainer extends Nette\DI\Container
public function createServiceNette__presenterFactory()
{
$service = new Nette\Application\PresenterFactory('...', $this);
$service->setMapping(array(
$service->setMapping([
'*' => 'App\\*Module\\Presenters\\*Presenter',
));
]);
return $service;
}

Expand Down
10 changes: 5 additions & 5 deletions doc/cs/database-selection.texy
Expand Up @@ -15,7 +15,7 @@ $selection->where('born > ?', $datetime);
Nette\Database automaticky přidá vhodné operátory podle toho, jaká data dostane:
/--code php
$name = 'Jon Snow';
$ids = array(1, 2, 3);
$ids = [1, 2, 3];
$null = NULL;

$selection->where('name', $name); // name = 'Jon Snow'
Expand All @@ -36,10 +36,10 @@ Pokud potřebujeme operátor `OR`, musíme podmínku napsat najednou nebo použi
/--code php
// id = 1 OR name = 'Jon Snow'
$selection->where('id = ? OR name = ?', 1, $name);
$selection->whereOr(array(
$selection->whereOr([
'id' => 1,
'name' => $name,
));
]);
\--

Zástupný symbol (otazník) funguje i bez sloupcového operátoru. Následující volání jsou prakticky stejná.
Expand All @@ -56,7 +56,7 @@ Selection správně zpracovává i záporné podmínky a umí pracovat také s p
$selection->where('NOT id', 1);
$selection->where('id NOT', 1); // to samé

$ids = array();
$ids = [];
$selection->where('id', $ids); // id IS NULL AND FALSE
$selection->where('id NOT', $ids); // id IS NULL OR FALSE
$selection->where('NOT (id ?)', $ids); // NOT (id IS NULL AND FALSE)
Expand Down Expand Up @@ -136,7 +136,7 @@ Možné argumenty metody [where() |api:Nette\Database\Table\Selection::where()]:
| `$table->where("field", $value)` | field = $value
| `$table->where("field", NULL)` | field IS NULL
| `$table->where("field > ?", $val)` | field > $val
| `$table->where("field", array(1, 2))` | field IN (1, 2)
| `$table->where("field", [1, 2])` | field IN (1, 2)
| `$table->where("field", $conn->table($tableName))` | field IN (SELECT $primary FROM $tableName)
| `$table->where("field", $conn->table($tableName)->select('col'))` | field IN (SELECT col FROM $tableName)

Expand Down

0 comments on commit 005736d

Please sign in to comment.