Dobre przepisy na cake php

Preview:

Citation preview

Dobre przepisy do CakePHP

Po co w ogóle Framework?

Nie wymyślajmy koła na nowo!

Po co w ogóle Framework?

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

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

• ...

MVCModel – View – Controller

Controller

ViewModel

Controller

ViewModel

Controller

ViewModel

Controller

ViewModel

Ruby on Rails jako inspiracja

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

CakePHP – zalety i wady

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

CakePHP – zalety i wady

• Model, Model, jeszcze raz Model

• Można rozwiazać poprzez integracje z Doctrine

• Enkapsulacja (brak public, protected, private)

• ...

Podstawy CakePHP

• MVC

• Components

• Helpers

• Behaviours

• Plugins

• Webroot

Podstawy CakePHP

• Nazewnictwo:

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

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

Podstawy CakePHP

• AppController

• AppModel

• AppHelper

Podstawy CakePHP – callbacks

• Controller

• beforeFilter

• beforeRender

CakePHP – odwzorowanie relacji

• Proste i przyjemne gdy przestrzegamy konwencji w nazewnictwie

• Automatyczne JOIN

• counterCache

Najczęściej popełniane błędy

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

• 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 ...

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.

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.

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.

• 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

Dodatkowe porady

• Wygodne ustawienie AppModel

Dodatkowe porady

• Wygodne ustawienie AppModel

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

Dodajemy tą metodę do AppModel nie AppController

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

Dodatkowe porady

• Wygodne ustawienie AppModel

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

• Wrappowanie Helperów

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)

Recommended