diff --git a/docs/guide-pl/README.md b/docs/guide-pl/README.md index 14eda81..b3fd5d6 100644 --- a/docs/guide-pl/README.md +++ b/docs/guide-pl/README.md @@ -1,5 +1,5 @@ Przewodnik po Yii 2.0 -=============================== +===================== Ten poradnik udostępniony jest na [Warunkach dokumentacji Yii](http://www.yiiframework.com/doc/terms/). @@ -9,14 +9,14 @@ Wszelkie prawa zastrzeżone. Wstęp ------------- +----- * [O Yii](intro-yii.md) * [Aktualizacja z wersji 1.1](intro-upgrade-from-v1.md) Pierwsze kroki ---------------- +-------------- * [Instalacja Yii](start-installation.md) * [Uruchamianie aplikacji](start-workflow.md) @@ -28,7 +28,7 @@ Pierwsze kroki Struktura aplikacji ---------------------- +------------------- * [Przegląd](structure-overview.md) * [Skrypty wejściowe](structure-entry-scripts.md) @@ -45,7 +45,7 @@ Struktura aplikacji Obsługa żądań ------------------ +------------- * [Przegląd](runtime-overview.md) * [Bootstrapping](runtime-bootstrapping.md) @@ -58,7 +58,7 @@ Obsługa żądań Kluczowe koncepcje ------------- +------------------ * [Komponenty](concept-components.md) * [Właściwości](concept-properties.md) @@ -72,10 +72,10 @@ Kluczowe koncepcje Praca z bazami danych ----------------------- +--------------------- * [Obiekt dostępu do danych (DAO)](db-dao.md): Łączenie z bazą, podstawowe zapytania, transakcje i manipulacja schematem. -* [Budowniczy kwerend](db-query-builder.md): Zapytania do bazy danych z użyciem warstwy abstrakcyjnej. +* [Konstruktor kwerend](db-query-builder.md): Zapytania do bazy danych z użyciem warstwy abstrakcyjnej. * [Rekord aktywny](db-active-record.md): ORM Rekordu aktywnego, otrzymywanie i manipulacja rekordami oraz definiowanie relacji. * [Migracje](db-migrations.md): Użycie systemu kontroli wersji na twoich bazach danych podczas tworzenia aplikacji w grupie. * [Sphinx](db-sphinx.md) @@ -85,7 +85,7 @@ Praca z bazami danych Odbieranie danych od użytkowników ------------------------ +--------------------------------- * [Tworzenie formularzy](input-forms.md) * [Walidacja danych wejściowych](input-validation.md) @@ -95,7 +95,7 @@ Odbieranie danych od użytkowników Wyświetlanie danych ---------------- +------------------- * [Formatowanie danych](output-formatting.md) * [Stronicowanie](output-pagination.md) @@ -103,11 +103,11 @@ Wyświetlanie danych * [Dostawcy danych](output-data-providers.md) * [Widżety danych](output-data-widgets.md) * [Praca ze skryptami po stronie klienta](output-client-scripts.md) -* [Motywy (Theming)](output-theming.md) +* [Skórki i motywy (Theming)](output-theming.md) Bezpieczeństwo --------- +-------------- * [Uwierzytelnianie](security-authentication.md) * [Autoryzacja](security-authorization.md) @@ -117,7 +117,7 @@ Bezpieczeństwo Pamięć podręczna -------- +---------------- * [Przegląd](caching-overview.md) * [Pamięć podręczna danych](caching-data.md) @@ -127,7 +127,7 @@ Pamięć podręczna Webserwisy z wykorzystaniem REST --------------------- +-------------------------------- * [Szybki start](rest-quick-start.md) * [Zasoby](rest-resources.md) @@ -141,7 +141,7 @@ Webserwisy z wykorzystaniem REST Narzędzia wspomagające tworzenie aplikacji ------------------ +------------------------------------------ * [Pasek debugowania i debuger](tool-debugger.md) * [Generowanie kodu przy użyciu Gii](tool-gii.md) @@ -149,7 +149,7 @@ Narzędzia wspomagające tworzenie aplikacji Testowanie -------- +---------- * [Przegląd](test-overview.md) * [Ustawienia środowiska testowego](test-endvironment-setup.md) @@ -160,7 +160,7 @@ Testowanie Tematy specjalne --------------- +---------------- * [Szablon zaawansowanej aplikacji](tutorial-advanced-app.md) * [Tworzenie aplikacji od podstaw](tutorial-start-from-scratch.md) @@ -169,7 +169,7 @@ Tematy specjalne * [Internacjonalizacja](tutorial-i18n.md) * [Wysyłanie poczty](tutorial-mailing.md) * [Poprawianie wydajności](tutorial-performance-tuning.md) -* [Shared Hosting Environment](tutorial-shared-hosting.md) +* [Współdzielone środowisko hostujące](tutorial-shared-hosting.md) * [Silniki szablonów](tutorial-template-engines.md) * [Praca z kodem zewnętrznym](tutorial-yii-integration.md) @@ -190,10 +190,19 @@ Widżety Klasy pomocnicze -------- +---------------- * [Przegląd](helper-overview.md) * [ArrayHelper](helper-array.md) * [Html](helper-html.md) * [Url](helper-url.md) + +Uwagi do polskiego tłumaczenia przewodnika +------------------------------------------ + +Niektóre z użytych w tym przewodniku programistycznych nazw zostały celowo spolszczone, w przypadku, gdy +w literaturze popularnej nie występują ich polskie odpowiedniki. Mam nadzieję, że czytelnik wybaczy mi okazjonalne +"settery", "gettery" i "traity", które umieszczam tutaj licząc na powszechne zrozumienie tych terminów w polskiej +społeczności programistycznej. Jednocześnie spolszczenia/tłumaczenia niektórych terminów, jak "Fixtures", odmawiam na razie +całkowicie, licząc na to, że język polski w końcu nadgoni lub wchłonie, w ten, czy inny sposób, techniczne nowości. diff --git a/docs/guide-pl/intro-upgrade-from-v1.md b/docs/guide-pl/intro-upgrade-from-v1.md new file mode 100644 index 0000000..48aa65d --- /dev/null +++ b/docs/guide-pl/intro-upgrade-from-v1.md @@ -0,0 +1,515 @@ +Aktualizacja z wersji 1.1 +========================= + +Pomiędzy wersjami 1.1 i 2.0 Yii jest ogrom różnic, ponieważ framework został całkowicie przepisany w 2.0. +Z tego też powodu aktualizacja z wersji 1.1 nie jest tak trywialnym procesem, jak w przypadku aktualizacji pomiędzy pomniejszymi wersjami. +W tym przewodniku zapoznasz się z największymi różnicami dwóch głównych wersji. + +Jeśli nie korzystałeś wcześniej z Yii 1.1, możesz pominąć tę sekcję i przejść bezpośrednio do "[Pierwszych kroków](start-installation.md)". + +Zwróć uwagę na to, że Yii 2.0 wprowadza znacznie więcej nowych funkcjonalności, niż wymienionych jest w tym podsumowaniu. +Wskazane jest zapoznanie się z treścią całego przewodnika, aby poznać je wszystkie. Jest bardzo prawdopodobne, że niektóre z mechanizmów, które +poprzednio musiałeś stworzyć samemu, teraz są częścią podstawowego kodu. + + +Instalacja +---------- + +Yii 2.0 w pełni korzysta z udogodnień [Composera](https://getcomposer.org/), będącego de facto menadżerem projektów PHP. +Z jego pomocą odbywa się zarówno instalacja podstawowego frameworka, jak i wszystkich rozszerzeń. Aby zapoznać się ze szczegółową +instrukcją instalacji Yii 2.0, przejdź do sekcji [Instalacja Yii](start-installation.md). Jeśli chcesz stworzyć nowe rozszerzenie +lub zmodyfikować istniejące w wersji 1.1, aby było kompatybilne z 2.0, przejdź do sekcji [Tworzenie rozszerzeń](structure-extensions.md#creating-extensions). + + +Wymagania PHP +------------- + +Yii 2.0 wymaga PHP w wersji 5.4 lub nowszej, która została znacząco ulepszona w stosunku do wersji 5.2 (wymaganej przez Yii 1.1). +Z tego też powodu już na poziomie samego języka pojawiło się sporo różnic, na które należy zwrócić uwagę. +Poniżej znajdziesz krótkie podsumowanie głównych różnic dotyczących PHP: + +- [Przestrzenie nazw](http://php.net/manual/pl/language.namespaces.php). +- [Funkcje anonimowe](http://php.net/manual/pl/functions.anonymous.php). +- Skrócona składnia zapisu tablic `[...elementy...]` używana zamiast `array(...elementy...)`. +- Krótkie tagi echo ` 'MyClass', + 'property1' => 'abc', + 'property2' => 'cde', +], [$param1, $param2]); +``` + +Więcej szczegółów na temat konfiguracji znajdziesz w sekcji [Konfiguracje](concept-configurations.md). + + +Zdarzenia (Events) +------------------ + +W Yii 1 zdarzenia były tworzone poprzez definiowanie `on`-metody (np., `onBeforeSave`). W Yii 2 możesz użyć dowolnej nazwy. Uruchomienie zdarzenia następuje +poprzez wywołanie metody [[yii\base\Component::trigger()|trigger()]]: + +```php +$event = new \yii\base\Event; +$component->trigger($eventName, $event); +``` + +Aby dołączyć uchwyt do zdarzenia, użyj metody [[yii\base\Component::on()|on()]]: + +```php +$component->on($eventName, $handler); +// a aby odłączyć uchwyt użyj: +// $component->off($eventName, $handler); +``` + +Zdarzenia zostały wzbogacone w wiele udoskonaleń. Więcej szczegółów na ten temat znajdziesz w sekcji [Zdarzenia (Events)](concept-events.md). + + +Aliasy ścieżek +-------------- + +Yii 2.0 rozszerza funkcjonalność aliasów ścieżek zarówno na ścieżki plików oraz folderów, jak i adresy URL. Yii 2.0 wymaga teraz też, +aby nazwa aliasu zaczynała się znakiem `@` w celu odróżnienia jej od zwyczajnych ścieżek plików/folderów lub URLi. +Dla przykładu: alias `@yii` odnosi się do folderu instalacji Yii. Aliasy ścieżek są wykorzystywane w większości miejsc w podstawowym +kodzie Yii, choćby [[yii\caching\FileCache::cachePath]] - można tu przekazać zarówno zwykłą ścieżkę, jak i alias. + +Alias ścieżki jest mocno powiązany z przestrzenią nazw klasy. Zalecane jest, aby zdefiniować alias dla każdej podstawowej +przestrzeni nazw, dzięki czemu mechanizm automatycznego ładowania klas Yii nie będzie wymagał dodatkowej konfiguracji. +Dla przykładu: dzięki temu, że `@yii` odwołuje się do folderu instalacji Yii, klasa taka jak `yii\web\Request` może być automatycznie załadowana. +Jeśli używasz zewnętrznych bibliotek, jak np. Zend Framework, możesz zdefiniować alias `@Zend` odnoszący się do folderu instalacji tego frameworka. +Od tej pory Yii będzie również w stanie automatycznie załadować każdą klasę z tej biblioteki. + +Więcej o aliasach ścieżek dostępne jest w sekcji [Aliasy](concept-aliases.md). + + +Widoki +------ + +Najbardziej znaczącą zmianą dotyczącą widoków w Yii 2 jest użycie specjalnej zmiennej `$this`. W widoku nie odnosi się ona już do +aktualnego kontrolera lub widżetu, lecz do obiektu *widoku*, nowej koncepcji przedstawionej w 2.0. Obiekt *widoku* jest klasą typu [[yii\web\View]], która +reprezentuje część wzorca MVC. Jeśli potrzebujesz odwołać się do kontrolera lub widżetu w widoku, możesz użyć `$this->context`. + +Aby zrenderować częściowy widok wewnątrz innego widoku, możesz użyć `$this->render()` zamiast dotychczasowego `$this->renderPartial()`. +Wywołanie `render` musi teraz też być bezpośrednio wyechowane, ponieważ metoda `render()` zwraca rezultat renderowania zamiast od razu go wyświetlać. + +```php +echo $this->render('_item', ['item' => $item]); +``` + +Oprócz wykorzystania PHP jako podstawowego języka szablonów, Yii 2.0 oficjalnie wspiera dwa popularne silniki szablonów: Smarty i Twig (The Prado nie jest już wspierany). +Aby użyć któregokolwiek z tych silników, musisz skonfigurować komponent aplikacji `view` poprzez ustawienie właściwości [[yii\base\View::$renderers|View::$renderers]]. +Po więcej szczegółów przejdź do sekcji [Silniki szablonów](tutorial-template-engines.md). + + +Modele +------ + +Yii 2.0 korzysta z [[yii\base\Model]] jako bazowego modelu, podobnie jak `CModel` w 1.1. +Klasa `CFormModel` została całkowicie usunięta, w Yii 2 należy rozszerzyć [[yii\base\Model]], aby stworzyć klasę modelu formularza. + +Yii 2.0 wprowadza nową metodę [[yii\base\Model::scenarios()|scenarios()]], służącą do deklarowania scenariuszy, jak i do oznaczania, w którym scenariuszu +atrybut będzie wymagał walidacji, może być uznany za bezpieczny lub nie itp. Dla przykładu: + +```php +public function scenarios() +{ + return [ + 'backend' => ['email', 'role'], + 'frontend' => ['email', '!role'], + ]; +} +``` + +Widzimy tutaj dwa zadeklarowane scenariusze: `backend` i `frontend`. W scenariuszu `backend` obydwa atrybuty, +`email` i `role`, są traktowane jako bezpieczne i mogą być przypisane zbiorczo. W przypadku scenariusza `frontend`, +`email` może być przypisany zbiorczo, ale `role` już nie. Zarówno `email` jak i `role` powinny przejść proces walidacji. + +Metoda [[yii\base\Model::rules()|rules()]] wciąż służy do zadeklarowania zasad walidacji. Zauważ, że z powodu wprowadzenia [[yii\base\Model::scenarios()|scenarios()]], +nie ma już walidatora `unsafe`. + +Jeśli metoda [[yii\base\Model::rules()|rules()]] deklaruje użycie wszystkich możliwych scenariuszy i jeśli nie masz potrzeby deklarowania atrybutów `unsafe` (niebezpiecznych), +w większości przypadków nie potrzebujesz nadpisywać metody [[yii\base\Model::scenarios()|scenarios()]]. + +Aby dowiedzieć się więcej o modelach, przejdź do sekcji [Modele](structure-models.md). + + +Kontrolery +---------- + +Yii 2.0 używa [[yii\web\Controller]] jako bazowej klasy kontrolera, podobnie do `CController` w Yii 1.1. +[[yii\base\Action]] jest bazową klasą dla akcji. + +Najbardziej oczywistą implikacją tych zmian jest to, że akcja kontrolera powinna zwracać zawartość, którą chcesz wyświetlić, zamiast wyświetlać ją bezpośrednio: + +```php +public function actionView($id) +{ + $model = \app\models\Post::findOne($id); + if ($model) { + return $this->render('view', ['model' => $model]); + } else { + throw new \yii\web\NotFoundHttpException; + } +} +``` + +Przejdź do sekcji [Kontrolery](structure-controllers.md), aby poznać więcej szczegółów na ten temat. + + +Widżety +------- + +Yii 2.0 korzysta z [[yii\base\Widget]] jako bazowej klasy widżetów, podobnie jak `CWidget` w Yii 1.1. + +Dla lepszego wsparcia frameworka w aplikacjach IDE Yii 2.0 wprowadził nową składnię używania widżetów. Używane są teraz metody +[[yii\base\Widget::begin()|begin()]], [[yii\base\Widget::end()|end()]] i [[yii\base\Widget::widget()|widget()]] w następujący sposób: + +```php +use yii\widgets\Menu; +use yii\widgets\ActiveForm; + +// Zwróć uwagę na konieczność użycia "echo", aby wyświetlić rezultat +echo Menu::widget(['items' => $items]); + +// Przekazujemy tablicę, aby zainicjalizować właściwości obiektu +$form = ActiveForm::begin([ + 'options' => ['class' => 'form-horizontal'], + 'fieldConfig' => ['inputOptions' => ['class' => 'input-xlarge']], +]); +... pola formularza w tym miejscu ... +ActiveForm::end(); +``` + +Więcej szczegółów na ten temat znajdziesz w sekcji [Widżety](structure-widgets.md). + + +Skórki i motywy (Theming) +------------------------- + +Skórki działają zupełnie inaczej w 2.0. Oparte są teraz na mechanizmie mapowania ścieżki, który przekształca źródłowy plik widoku +w plik widoku skórki. Dla przykładu, jeśli mapa ścieżki dla skórki to `['/web/views' => '/web/themes/basic']`, to skórkowa wersja pliku widoku +`/web/views/site/index.php` to `/web/themes/basic/site/index.php`. Dzięki temu skórki mogą być użyte dla dowolnego pliku widoku, nawet w przypadku +widoku wyrenderowanego poza kontekstem kontrolera lub widżetu. + +Nie ma również już komponentu `CThemeManager`. Zamiast tego `theme` jest konfigurowalną właściwością komponentu aplikacji `view`. + +Sekcja [Skórki i motywy (Theming)](output-theming.md) zawiera więcej szczegółów na ten temat. + + +Aplikacje konsolowe +------------------- + +Aplikacje konsolowe używają teraz kontrolerów tak jak aplikacje webowe. Kontrolery konsolowe powinny rozszerzać klasę +[[yii\console\Controller]], podobnie jak `CConsoleCommand` w 1.1. + +Aby uruchomić polecenie konsoli, użyj `yii `, gdzie `` oznacza ścieżkę kontrolera (np. `sitemap/index`). +Dodatkowe anonimowe argumenty są przekazywane jako parametry do odpowiedniej metody akcji kontrolera, natomiast nazwane +argumenty są przetwarzane według deklaracji zawartych w [[yii\console\Controller::options()]]. + +Yii 2.0 wspiera automatyczne generowanie informacji pomocy poprzez bloki komentarzy. + +Aby dowiedzieć się więcej na ten temat, przejdź do sekcji [Komendy konsolowe](tutorial-console.md). + + +I18N +---- + +Yii 2.0 usunął wbudowany formater dat i liczb na rzecz [modułu PECL intl PHP](http://pecl.php.net/package/intl). + +Tłumaczenia wiadomości odbywają się teraz poprzez komponent aplikacji `i18n`, w którym można ustalić zestaw źródeł treści, +dzięki czemu możliwy jest ich wybór dla różnych kategorii wiadomości. + +W sekcji [Internacjonalizacja](tutorial-i18n.md) znajdziesz więcej szczegółów na ten temat. + + +Filtry akcji +------------ + +Filtry akcji są implementowane od teraz za pomocą zachowań (behavior). Aby zdefiniować nowy filtr, należy rozszerzyć klasę [[yii\base\ActionFilter]]. +Użycie filtru odbywa się poprzez dołączenie go do kontrolera jako zachowanie. Dla przykładu: aby użyć filtra [[yii\filters\AccessControl]], dodaj poniższy kod w kontrolerze: + +```php +public function behaviors() +{ + return [ + 'access' => [ + 'class' => 'yii\filters\AccessControl', + 'rules' => [ + ['allow' => true, 'actions' => ['admin'], 'roles' => ['@']], + ], + ], + ]; +} +``` + +Więcej informacji na ten temat znajdziesz w sekcji [Filtry](structure-filters.md). + + +Zasoby (Assets) +--------------- + +Yii 2.0 wprowadza nowy mechanizm tzw. *pakietów zasobów*, który zastąpił koncepcję pakietów skryptowych z Yii 1.1. + +Pakiet zasobów jest kolekcją plików zasobów (np. plików JavaScript, CSS, obrazków, itd.) zgromadzoną w folderze. +Każdy pakiet jest reprezentowany przez klasę rozszerzającą [[yii\web\AssetBundle]]. Zarejestrowanie pakietu poprzez +metodę [[yii\web\AssetBundle::register()]] pozwala na udostępnienie go publicznie. W przeciwieństwie do rozwiązania z Yii 1, +strona rejestrująca pakiet będzie automatycznie zawierać referencje do plików JavaScript i CSS wymienionych na jego liście. + +Sekcja [Zasoby (Assets)](structure-assets.md) zawiera szczegółowe informacje na ten temat. + + +Klasy pomocnicze +---------------- + +Yii 2.0 zawiera wiele powszechnie używanych statycznych klas pomocniczych (helperów), takich jak: + +* [[yii\helpers\Html]] +* [[yii\helpers\ArrayHelper]] +* [[yii\helpers\StringHelper]] +* [[yii\helpers\FileHelper]] +* [[yii\helpers\Json]] + +W sekcji [Klasy pomocnicze](helper-overview.md) znajdziesz więcej informacji na ten temat. + + +Formularze +---------- + +Yii 2.0 wprowadza koncepcję *pola* do budowy formularzy, korzystając z klasy [[yii\widgets\ActiveForm]]. +Pole jest kontenerem składającym się z etykiety, pola wprowadzenia danych formularza, informacji o błędzie i/lub tekstu podpowiedzi, reprezentowanym +przez obiekt klasy [[yii\widgets\ActiveField|ActiveField]]. +Używając pól, możesz stworzyć formularz w sposób o wiele prostszy i bardziej przejrzysty niż do tej pory: + +```php + + field($model, 'username') ?> + field($model, 'password')->passwordInput() ?> +
+ +
+ +``` + +Aby dowiedzieć się więcej na ten temat, przejdź do sekcji [Tworzenie formularzy](input-forms.md). + + +Konstruktor kwerend +------------------- + +W 1.1 budowanie kwerend było rozrzucone pomiędzy kilka klas, tj. `CDbCommand`, `CDbCriteria` i `CDbCommandBuilder`. +Yii 2.0 reprezentuje kwerendę bazodanową w postaci obiektu [[yii\db\Query|Query]], który może być zamieniony +w komendę SQL za pomocą [[yii\db\QueryBuilder|QueryBuilder]]. +Przykładowo: + +```php +$query = new \yii\db\Query(); +$query->select('id, name') + ->from('user') + ->limit(10); + +$command = $query->createCommand(); +$sql = $command->sql; +$rows = $command->queryAll(); +``` + +Co najlepsze, taki sposób tworzenia kwerend może być również wykorzystany przy pracy z [Rekordem aktywnym](db-active-record.md). + +Po więcej szczegółów udaj się do sekcji [Konstruktor kwerend](db-query-builder.md). + + +Rekord aktywny +-------------- + +Yii 2.0 wprowadza sporo zmian w [Rekordach aktywnych](db-active-record.md). Dwie najbardziej znaczące to +konstruowanie kwerend i obsługa relacji. + +Klasa `CDbCriteria` z 1.1 została zastąpiona przez [[yii\db\ActiveQuery]] w Yii 2. Klasa ta rozszerza [[yii\db\Query]], dzięki czemu +dziedziczy wszystkie metody konstruowania kwerend. Aby rozpocząć budowanie kwerendy, wywołaj metodę [[yii\db\ActiveRecord::find()]]: + +```php +// Pobranie wszystkich *aktywnych* klientów i posortowanie po ich ID: +$customers = Customer::find() + ->where(['status' => $active]) + ->orderBy('id') + ->all(); +``` + +Deklaracja relacji polega na prostym zdefiniowaniu metody gettera, który zwróci obiekt [[yii\db\ActiveQuery|ActiveQuery]]. +Nazwa właściwości określonej przez tego gettera reprezentuje nazwę stworzonej relacji. Dla przykładu: w poniższym kodzie deklarujemy +relację `orders` (w 1.1 konieczne było zadeklarowanie relacji wewnątrz wydzielonej specjalnie metody `relations()`): + +```php +class Customer extends \yii\db\ActiveRecord +{ + public function getOrders() + { + return $this->hasMany('Order', ['customer_id' => 'id']); + } +} +``` + +Od tej pory można posługiwać się `$customer->orders`, aby uzyskać dostęp do tabeli zamówień klientów poprzez relację. Dodatkowo można również posłużyć się +następującym kodem, aby wywołać relacyjną kwerendę dla zadanych warunków: + +```php +$orders = $customer->getOrders()->andWhere('status=1')->all(); +``` + +Przy "gorliwym" pobieraniu relacji ("eager", w przyciwieństwie do leniwego pobierania "lazy") Yii 2.0 działa inaczej niż w wersji 1.1. W 1.1 tworzono kwerendę JOIN, +aby pobrać zarówno główne, jak i relacyjne rekordy. W Yii 2.0 wywoływane są dwie komendy SQL bez użycia JOIN - pierwsza pobiera główne rekordy, a druga relacyjne, filtrując je +przy użyciu kluczy głównych rekordów. + +Aby zmniejszyć zużycie CPU i pamięci, zamiast zwracać obiekty [[yii\db\ActiveRecord|ActiveRecord]], do kwerendy pobierającej dużą ilość rekordów możesz podpiąć metodę +[[yii\db\ActiveQuery::asArray()|asArray()]], dzięki czemu zostaną one pobrane jako tablice. Przykładowo: + +```php +$customers = Customer::find()->asArray()->all(); +``` + +Inną istotną zmianą jest to, że nie można już definiować domyślnych wartości atrybutów poprzez publiczne właściwości. +Jeśli potrzebujesz takich definicji, powinieneś przypisać je wewnątrz metody `init` w klasie rekordu. + +```php +public function init() +{ + parent::init(); + $this->status = self::STATUS_NEW; +} +``` + +Nadpisywanie konstruktora klasy ActiveRecord w 1.1 wiązało się z pewnymi problemami, co nie występuje już w wersji 2.0. +Zwróć jednak uwagę na to, że przy dodawaniu parametrów do konstruktora możesz potrzebować nadpisać metodę [[yii\db\ActiveRecord::instantiate()]]. + +W nowym rekordzie aktywnym znajdziesz wiele innych zmian i udogodnień. Aby zapoznać się z nimi, przejdź do sekcji [Rekord aktywny](db-active-record.md). + + +Zachowania rekordu aktywnego +---------------------------- + +W 2.0 zrezygnowaliśmy z bazowej klasy zachowania `CActiveRecordBehavior`. Jeśli chcesz stworzyć zachowanie dla rekordu aktywnego, musisz +rozszerzyć bezpośrednio klasę `yii\base\Behavior`. Jeśli klasa zachowania ma reagować na zdarzenia, powinna nadpisywać metodę `events()`, jak zaprezentowano poniżej: + +```php +namespace app\components; + +use yii\db\ActiveRecord; +use yii\base\Behavior; + +class MyBehavior extends Behavior +{ + // ... + + public function events() + { + return [ + ActiveRecord::EVENT_BEFORE_VALIDATE => 'beforeValidate', + ]; + } + + public function beforeValidate($event) + { + // ... + } +} +``` + + +Klasa User i IdentityInterface +------------------------------ + +Klasa `CWebUser` z 1.1 została zastąpiona przez [[yii\web\User]] i nie ma już klasy `CUserIdentity`. +Zamiast tego należy zaimplementować interfejs [[yii\web\IdentityInterface]], który jest znacznie bardziej wygodny i oczywisty w użyciu. +Szablon zaawansowanego projektu zawiera przykład takiego właśnie użycia. + +Po więcej szczegółów zajrzyj do sekcji [Uwierzytelnianie](security-authentication.md), [Autoryzacja](security-authorization.md) i [Szablon zaawansowanego projektu](https://github.com/yiisoft/yii2-app-advanced/blob/master/docs/guide/README.md). + + +Zarządzanie adresami URL +------------------------ + +Zarządzanie adresami URL w Yii 2 jest bardzo podobne do tego znanego z 1.1. Głównym ulepszeniem tego mechanizmu jest teraz wsparcie dla parametrów opcjonalnych. +Dla przykładu: warunek dla adresu zadeklarowany poniżej obejmie zarówno `post/popular` jak i `post/1/popular`. W 1.1 konieczne byłoby napisanie dwóch warunków, aby +osiągnąć to samo. + +```php +[ + 'pattern' => 'post//', + 'route' => 'post/index', + 'defaults' => ['page' => 1], +] +``` + +Przejdź do sekcji [Zarządzania adresami URL](runtime-routing.md) po więcej informacji. + +Istotną zmianą konwencji nazw dla adresów jest to, że nazwy kontrolerów i akcji typu "camel case" są teraz +konwertowane do małych liter, z każdym słowem oddzielonym za pomocą myślnika, np. ID kontrolera `CamelCaseController` zostanie +przekształcone w `camel-case`. + +Zapoznaj się z sekcją dotyczącą [ID kontrolerów](structure-controllers.md#controller-ids) i [ID akcji](structure-controllers.md#action-ids). + + +Korzystanie z Yii 1.1 i 2.x jednocześnie +---------------------------------------- + +Jeśli chciałbyś skorzystać z kodu napisanego dla Yii 1.1 w aplikacji Yii 2.0, prosimy o zapoznanie się z sekcją [Praca z kodem zewnętrznym](tutorial-yii-integration.md). diff --git a/docs/guide-pl/intro-yii.md b/docs/guide-pl/intro-yii.md index 71fafb7..b99ff79 100644 --- a/docs/guide-pl/intro-yii.md +++ b/docs/guide-pl/intro-yii.md @@ -2,52 +2,56 @@ Czym jest Yii ============= Yii jest wysoko wydajnym, opartym na komponentach frameworkiem PHP do szybkiego programowania -nowoczesnych stron internetowych. Nazwa Yii (wymawiana [ji:]) znaczy po chińsku "prosto i ewolucyjnie". -Może to być również rozumiane jako akronim dla Yes It Is! +nowoczesnych stron internetowych. Nazwa Yii (wymawiana [ji:]) oznacza w języku chińskim "prosto i ewolucyjnie". +Może to być również rozumiane jako akronim dla **Yes It Is**! -Do czego Yii jest najlepsze ? -============================= +Dla jakich zastosowań Yii jest najlepszy? +----------------------------------------- -Yii jest frameworkiem www ogólnego przeznaczenia, co znaczy że może być użyte do kodowania -wszystkich rodzajów aplikacji webowych używających PHP. Z uwagi na architekturę -opartą na komponentach i wyrafinowane wsparcie dla mechanizmów buforowania, jest on odpowiedni -do tworzenia wielkich aplikacji jak portale, fora, systemy zarządzania treścią (CMS), -projekty komercyjne (e-sklepy), usługi webowe i inne. +Yii jest frameworkiem ogólnego przeznaczenia, co oznacza, że może być wykorzystany do stworzenia +każdego rodzaju aplikacji internetowych korzystających z PHP. Z uwagi na architekturę +opartą na komponentach i zaawansowane wsparcie dla mechanizmów pamięci podręcznej jest on odpowiedni +do tworzenia rozbudowanych aplikacji, takich jak: portale, fora, systemy zarządzania treścią (CMS), +projekty komercyjne (e-sklepy), usługi sieciowe i inne. -Jak wygląda porównanie Yii z innymi frameworkami ? -================================================== -Jeśli już znasz inny framework, możesz docenić następujące cechy: +Jak wygląda porównanie Yii z innymi frameworkami? +------------------------------------------------- -* Jak wiele frameworków, Yii implementuje architekturę MVC (model-widok-kontroller) -i wspiera organizację kodu zgodną z tym wzorcem. -* Yii opiera się na filozofii że kod powinien być pisany prosto i elegancko. Yii nie próbuje przeprojektowywać -rzeczy tylko w celu dokładnego odwozowania wzorca projektowego. -* Yii jest pełnym frameworkiem dostarczającym sprawdzone i gotowe do użycia funkcjonalności: konstruktory zapytań -i ActiveRecord dla baz danych relacyjnych oraz NoSql; wsparcie dla RESTFull API; -wielostopniowe wsparcie dla buforowania; i więcej. -* Yii jest niezwykle rozszerzalne. Możesz dostosować lub zmienić prawie każdy fragment rdzennego kodu. Możesz wykorzystać architekturę rozszerzeń, aby używać lub tworzyć łatwe do rozpowszechniania rozszerzenia. -* Wysoka wydajność jest zawsze głównym celem w Yii. +Jeśli korzystałeś już z innych frameworków, na pewno docenisz, jak Yii wypada na ich tle: + +* Jak większość frameworków, Yii wykorzystuje architekturę MVC (Model-Widok-Kontroler) i wspiera organizację kodu zgodną z tym wzorcem. +* Yii opiera się na filozofii, która mówi, że kod powinien być napisany w prosty, ale jednocześnie elegancki sposób. Yii nigdy nie będzie upierać się przy przeprojektowaniu +kodu jedynie w celu dokładnego trzymania się zasad wzorca projektowego. +* Yii jest w pełni rozwiniętym frameworkiem dostarczającym sprawdzonych i gotowych do użycia funkcjonalności: konstruktorów zapytań +oraz ActiveRecord dla baz danych relacyjnych i NoSQL, wsparcia dla tworzenia RESTful API oraz wielopoziomowych mechanizmów pamięci podręcznej i wielu, wielu innych. +* Yii jest ekstremalnie rozszerzalny. Możesz dostosować lub wymienić praktycznie każdy fragment podstawowego kodu. +Dodatkowo Yii wykorzystuje architekturę rozszerzeń, dzięki czemu możesz w prosty sposób stworzyć i opublikować swoje własne moduły i widżety. +* Podstawowym celem, do którego Yii zawsze dąży, jest wysoka wydajność. + +Yii nie jest efektem pracy pojedynczego programisty - projekt wspiera zarówno [grupa doświadczonych deweloperów][about_yii], jak i ogromna społeczność programistyczna, nieustannie +przyczyniając się do jego rozwoju. Deweloperzy trzymają rękę na pulsie najnowszych trendów Internetu, za pomocą prostych i eleganckich interfejsów wzbogacając Yii w najlepsze sprawdzone +rozwiązania i funkcjonalności, dostępne w innych frameworkach i projektach. Wersje Yii -========== +---------- + +Yii aktualnie dostępny jest w dwóch głównych wersjach: 1.1 i 2.0. Wersja 1.1 jest kodem starszej generacji, obecnie w fazie utrzymaniowej. +Wersja 2.0 jest całkowicie przepisaną wersją Yii z uwzględnieniem najnowszych protokołów i technologii, takich jak Composer, PSR, przestrzenie nazw, traity i wiele innych. +2.0 reprezentuje aktualną generację frameworka i na niej skupi się głównie praca programistów w ciągu najbliższych lat. +Ten przewodnik opisuje wersję 2.0. -Yii ma aktualnie (2014-12-28 - przyp tłumacza) rozpowszechniane dwie główne wersje: 1.1 i 2.0. Wersja 1.1 jest starszej generacji (dla PHP 5.1) -i jest w fazie utrzymaniowej. Wersja 2.0 jest całkowiecie przepisaną wersją Yii uwzględniającą -najnowsze technologie i protokoły, w tym Composer,PSR,przestrzenie nazw, traity i więcej. -Wersja 2.0 reprezentuje aktualną generację frameworka i otrzyma największe wsparcie programistów -przez najbliższe lata. Ten podręcznik jest wyłącznie o wersji 2.0. Wymagania i zależności -====================== +---------------------- -Yii 2.0 wymaga PHP 5.4.0 lub nowszego. Dokładniejsze wymagania dla konkretnych funkcjonalności -możesz sprawdzić uruchamiając tester wymagań `requirements.php` dołączony w każdym wydaniu Yii. +Yii 2.0 wymaga PHP w wersji 5.4.0 lub nowszej. Aby otrzymać więcej informacji na temat wymagań i indywidualnych funkcjonalności, +uruchom specjalny skrypt testujący system `requirements.php`, dołączony w każdym wydaniu Yii. Używanie Yii wymaga podstawowej wiedzy o programowaniu obiektowym w PHP (OOP), ponieważ Yii jest frameworkiem czysto obiektowym. Yii 2.0 wykorzystuje ostatnie udoskonalenia w PHP, jak -przestrzenie nazw i traity. Zrozumienie tych konstrukcji pomoże ci łatwiej zdecydować się na Yii 2.0. +[przestrzenie nazw](http://www.php.net/manual/pl/language.namespaces.php) i [traity](http://www.php.net/manual/pl/language.oop5.traits.php). +Zrozumienie tych konstrukcji pomoże Ci szybciej i łatwiej rozpocząć pracę z Yii 2.0. -.