43
Dobre przepisy do CakePHP

Dobre przepisy na cake php

Embed Size (px)

Citation preview

Page 1: Dobre przepisy na cake php

Dobre przepisy do CakePHP

Page 2: Dobre przepisy na cake php

Po co w ogóle Framework?

Page 3: Dobre przepisy na cake php

Nie wymyślajmy koła na nowo!

Po co w ogóle Framework?

Page 4: Dobre przepisy na cake php

Po co w ogóle Framework?

• Większość aplikacji na samym początku składa się z tych samych elementów:

• Logowanie

• Uprawnienia użytkowników

• Wysyłanie e-maili

• Panel administracyjny

Page 5: Dobre przepisy na cake php

Po co w ogóle Framework?

• Dodatkowo potrzebujemy komponenty odpowiadające za:

• Wykonywanie zapytań do bazy danych

• Cachowanie

• Możliwość wykonywania cyklicznych operacji – cronjob

• Zarządzanie Session i Cookies

• ...

Page 6: Dobre przepisy na cake php

MVCModel – View – Controller

Page 7: Dobre przepisy na cake php

Controller

ViewModel

Page 8: Dobre przepisy na cake php

Controller

ViewModel

Page 9: Dobre przepisy na cake php

Controller

ViewModel

Page 10: Dobre przepisy na cake php

Controller

ViewModel

Page 11: Dobre przepisy na cake php

Ruby on Rails jako inspiracja

Page 12: Dobre przepisy na cake php

Ruby on Rails jako inspiracja

• W 2005 roku pojawił się framework Ruby on Rails

• Frameworki PHP inspirowane RoR:

• CakePHP

• Symfony

• PHP on Trax

• Code Igniter

• Biscuit

• Pipeline

Page 13: Dobre przepisy na cake php

CakePHP – zalety i wady

Page 14: Dobre przepisy na cake php

CakePHP – zalety i wady

• Szybka instalacja i niewielka ilość plików konfiguracyjnych

• Prosty w nauce

• Pokrycie kodu testami: 100%

• Wygodne korzystanie z Cache

• Bake

• Jednolity kod

Page 15: Dobre przepisy na cake php

CakePHP – zalety i wady

• Model, Model, jeszcze raz Model

• Można rozwiazać poprzez integracje z Doctrine

• Enkapsulacja (brak public, protected, private)

• ...

Page 16: Dobre przepisy na cake php

Podstawy CakePHP

• MVC

• Components

• Helpers

• Behaviours

• Plugins

• Webroot

Page 17: Dobre przepisy na cake php

Podstawy CakePHP

• Nazewnictwo:

• Nazwa tabeli i prefix controlleraliczba mnoga (clients, users, ...)

• Nazwa modeluliczba pojedyńcza (Client, User, ...)

Page 18: Dobre przepisy na cake php

Podstawy CakePHP

• AppController

• AppModel

• AppHelper

Page 19: Dobre przepisy na cake php

Podstawy CakePHP – callbacks

• Controller

• beforeFilter

• beforeRender

Page 20: Dobre przepisy na cake php
Page 21: Dobre przepisy na cake php

CakePHP – odwzorowanie relacji

• Proste i przyjemne gdy przestrzegamy konwencji w nazewnictwie

• Automatyczne JOIN

• counterCache

Page 22: Dobre przepisy na cake php
Page 23: Dobre przepisy na cake php

Najczęściej popełniane błędy

• Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses.

Page 24: Dobre przepisy na cake php

• ClientContact i ClientTalk niepotrzebne – dostępne poprzez relacje Client:$this->Client->ClientContact->find('all');

• Pozostałe classy ładujemy poprzez $this->loadModel('Setting');

• Sygnał alarmowy dla więcej niż 2 modeli w $uses

• 1 prosty model ładowany w AppController do wykonywania query() i ...

Page 25: Dobre przepisy na cake php

Najczęściej popełniane błędy

• Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses.

• Nie używanie helperów $this->Formi $this->Html w widokach.

Page 26: Dobre przepisy na cake php
Page 27: Dobre przepisy na cake php

Najczęściej popełniane błędy

• Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses.

• Nie używanie helperów $this->Formi $this->Html w widokach.

• Podawanie gotowego adresu url jako parametr do $this->Html->link() lub $this->Html->url() zamiast parametrów.

Page 28: Dobre przepisy na cake php
Page 29: Dobre przepisy na cake php

Najczęściej popełniane błędy

• Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses.

• Nie używanie helperów $this->Formi $this->Html w widokach.

• Podawanie gotowego adresu url jako parametr do $this->Html->link() lub $this->Html->url() zamiast parametrów.

• Brak domyślnych wartości dla parametrów do metod w controller.

Page 30: Dobre przepisy na cake php

• Na wypadek gdyby zamiast /client/edit/10 zostanie wysłane zapytanie do /client/edit

• Unikamy ostrzeżenia ze strony PHP:Warning (2): Missing argument 1 for ClientsController::edit() [APP/controllers/clients_controller.php, ...]

• Zapewniamy poprawną obsługę wyjątkowych przypadków

Page 31: Dobre przepisy na cake php

Dodatkowe porady

• Wygodne ustawienie AppModel

Page 32: Dobre przepisy na cake php

Dodatkowe porady

• Wygodne ustawienie AppModel

• Cachowanie skomplikowanych zapytańi wyników przekazanych do stronicowania.

Page 33: Dobre przepisy na cake php
Page 34: Dobre przepisy na cake php

Dodajemy tą metodę do AppModel nie AppController

Metoda _idBasedOnArgs() zwraca unikalny identyfikator wywołania metody z podanymi parametrami.

Page 35: Dobre przepisy na cake php

Dodatkowe porady

• Wygodne ustawienie AppModel

• Cachowanie skomplikowanych zapytańi wyników przekazanych do stronicowania.

• Wrappowanie Helperów

Page 36: Dobre przepisy na cake php
Page 37: Dobre przepisy na cake php

Dodatkowe porady

• Wygodne ustawienie AppModel

• Cachowanie skomplikowanych zapytańi wyników przekazanych do stronicowania.

• Wrappowanie Helperów

• Gruby Model – Chudy Controller (Fat Models Skinny Controllers)

Page 38: Dobre przepisy na cake php
Page 39: Dobre przepisy na cake php
Page 40: Dobre przepisy na cake php
Page 41: Dobre przepisy na cake php
Page 42: Dobre przepisy na cake php
Page 43: Dobre przepisy na cake php