Upgrade to Pro — share decks privately, control downloads, hide ads and more …

YII2 - lekiem na całe zło?

YII2 - lekiem na całe zło?

Krzysztof Kąkol

October 26, 2015
Tweet

More Decks by Krzysztof Kąkol

Other Decks in Programming

Transcript

  1. 1. Jak wybieramy framework i co jest tak naprawdę ważne?

    2. YII2 YII2 lekiem na całe zło? 2015-10-26 3
  2. Czynniki podstawowe: • Wiedza zespołu • Wygoda programowania • Łagodna

    krzywa uczenia się • Dostosowanie do potrzeb 1. Jak wybieramy framework 2015-10-26 5
  3. Czynniki technologiczno-biznesowe: • Dokumentacja • Społeczność • Wersja frameworka, wsparcie

    technologiczne • Implikacje biznesowe • Wymagania klienta 1. Jak wybieramy framework 2015-10-26 6
  4. Czy zawsze ten sam framework? • Siła przyzwyczajenia – zły

    doradca • Framework (narzędzie) musi być odpowiednie do zamierzonych celów 1. Jak wybieramy framework 2015-10-26 7
  5. • Autorem jest Qiang Xue • Poprzednio stworzył framework Prado

    • Skrót YII oznacza – Yes, it is! • YII został wydany w grudniu 2008 roku. YII2 – październik 2014. 2. YII2 2015-10-26 10
  6. • Lekki i szybki framework • Bardzo łatwy do nauczenia

    • Elastyczny, nie narzuca żadnego stylu czy architektury • „Wyposażony” we wszystkie narzędzia obecne w nowoczesnych frameworkach • Świetna dokumentacja • Mnóstwo gotowych zewnętrznych komponentów 2. YII2 – cechy frameworka 2015-10-26 12
  7. Szybka instalacja: composer create-project --prefer-dist yiisoft/yii2-app-advanced . init yii migrate

    …i mamy gotowy projekt, z frontendem i backendem, rejestracją i logowaniem. Łatwo można dodać RBAC. 2. YII2 – cechy frameworka 2015-10-26 13
  8. Alternatywnie korzystamy z gotowej paczki z vagrantem: https://github.com/iJackUA/try-yii2 …i mamy

    to samo co wcześniej, ale na vagrancie. Dodatkowo mamy: nginx, postgresql, mysql, redis, memcached itp. 2. YII2 – cechy frameworka 2015-10-26 14
  9. GII – narzędzie generowania kodu: • Generowanie modeli, kontro- lerów,

    CRUDów, modułów itp. • Możliwość użycia własnych szablonów 2. YII2 - GII 2015-10-26 17
  10. ORM: • ActiveRecord – wbudowany w YII2 • Generator modeli

    w GII • YII DAO wspiera: •MySQL •MariaDB •SQLite •PostgreSQL •CUBRID •Oracle •MSSQL od wersji 2008 2. YII2 - ORM 2015-10-26 19
  11. 2. YII2 - ORM 2015-10-26 20 Przykładowa klasa modelu: <?php

    namespace app\models; use yii\db\ActiveRecord; class Customer extends ActiveRecord { public static function tableName() { return 'customer'; } } ?>
  12. 2. YII2 - ORM 2015-10-26 21 Przykładowe użycie: <?php $customers

    = Customer::find()->indexBy('id‘)->all(); $customers = Customer::find()->asArray()->all(); $customer = Customer::find()->where(['id' => 123])->one(); $customer = new Customer(); $customer->name = ‘Jan Kowalski'; $customer->save(); ?>
  13. Dependency injection: • w konstruktorze kontrolera class HotelController extends Controller

    { protected $bookingService; public function __construct($id, $module, BookingService $bookingService, $config = []) { $this->bookingService = $bookingService; parent::__construct($id, $module, $config); } } • poprzez dodatkową konfigurację i jawne użycie kontenera 2. YII2 – DI 2015-10-26 23
  14. Pakiet testowy Codeception: • Dostępny od razu z poziomu aplikacji

    • Testy funkcjonalne, akceptacyjne (PHP Browser, Selenium i inne) i jednostkowe (wrapper na PHPUnit) • Styl pisania testów zgodny z ideą BDD 2. YII2 - testowanie 2015-10-26 25
  15. Przykład testu w Codeception: $I = new AcceptanceTester($scenario); $I->wantTo('create wiki

    page'); $I->amOnPage('/'); $I->click('Pages'); $I->click('New'); $I->see('New Page'); $I->fillField('title', 'Hobbit'); $I->fillField('body', 'By Peter Jackson'); $I->click('Save'); $I->see('page created'); $I->see('Hobbit','h1'); $I->seeInCurrentUrl('pages/hobbit'); $I->seeInDatabase('pages', array('title' => 'Hobbit')); 2. YII2 - testowanie 2015-10-26 26
  16. Zarządzanie środowiskami: • Możliwość łatwego definiowania różnych środowisk (np. dev,

    uat, prod) • Każde środowisko posiada zestaw plików tzw. local, które są podmieniane w zależności od inicjalizacji (komenda init) • Łatwa konfiguracja - pliki PHP 2. YII2 - środowiska 2015-10-26 28
  17. Struktura środowiska: - environments - dev - backend - config

    - main-local.php - params-local.php - web - index.php - prod - backend - config - main-local.php - params-local.php - web - index.php 2. YII2 - środowiska 2015-10-26 29
  18. PGS Software S.A. Tel.: +48 71 79 82 692 Fax:

    +48 71 79 82 690 E-mail: [email protected] www.pgs-soft.com