SlideShare ist ein Scribd-Unternehmen logo
1 von 43
Downloaden Sie, um offline zu lesen
Dobre przepisy do CakePHP
Po co w ogóle Framework?
Po co w ogóle Framework?


Nie wymyślajmy koła na nowo!
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

    •   ...
MVC
Model – View – Controller
Controller




Model                View
Controller




Model                View
Controller




Model                View
Controller




Model                View
Ruby on Rails jako inspiracja
Ruby on Rails jako inspiracja
•   W 2005 roku pojawił się framework Ruby on Rails

•   Frameworki PHP inspirowane RoR:

    •   CakePHP              •   Code Igniter

    •   Symfony              •   Biscuit

    •   PHP on Trax          •   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 controllera
     liczba mnoga (clients, users, ...)

 •   Nazwa modelu
     liczba 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->Form
  i $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->Form
  i $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->Form
  i $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)
Dobre przepisy na cake php
Dobre przepisy na cake php
Dobre przepisy na cake php
Dobre przepisy na cake php
Dobre przepisy na cake php
Dobre przepisy na cake php

Weitere ähnliche Inhalte

Andere mochten auch

Auto scaling applications in 10 minutes (CakeFest 2013)
Auto scaling applications in 10 minutes (CakeFest 2013)Auto scaling applications in 10 minutes (CakeFest 2013)
Auto scaling applications in 10 minutes (CakeFest 2013)Juan Basso
 
Sleep better by automating monitoring for your app (CakeFest 2013)
Sleep better by automating monitoring for your app (CakeFest 2013)Sleep better by automating monitoring for your app (CakeFest 2013)
Sleep better by automating monitoring for your app (CakeFest 2013)Juan Basso
 
Optimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsOptimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsJuan Basso
 
Creative Web 2.0 Learning
Creative Web 2.0 LearningCreative Web 2.0 Learning
Creative Web 2.0 LearningJudy O'Connell
 
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013Ft Riley Winter Guide Dec 2012, Jan and Feb 2013
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013Noel Waterman
 
Home sales increased last year january 2012
Home sales increased last year january 2012Home sales increased last year january 2012
Home sales increased last year january 2012Matt Collinge
 
Social media- Military Voters and Social Media
Social media- Military Voters and Social MediaSocial media- Military Voters and Social Media
Social media- Military Voters and Social MediaNoel Waterman
 
11 APRIL 2012 1HBCT Weekly News Update
11 APRIL 2012 1HBCT Weekly News Update11 APRIL 2012 1HBCT Weekly News Update
11 APRIL 2012 1HBCT Weekly News UpdateNoel Waterman
 
Evaluation Question 1.
Evaluation Question 1. Evaluation Question 1.
Evaluation Question 1. Aharkness2512
 
14 Nov 2012 1ABCT Weekly Newsletter
14 Nov  2012 1ABCT Weekly Newsletter14 Nov  2012 1ABCT Weekly Newsletter
14 Nov 2012 1ABCT Weekly NewsletterNoel Waterman
 
Home away from home sjc-shopping-observation lab
Home away from home   sjc-shopping-observation labHome away from home   sjc-shopping-observation lab
Home away from home sjc-shopping-observation labViroo Mirji
 

Andere mochten auch (18)

Fsn15oldfans
Fsn15oldfansFsn15oldfans
Fsn15oldfans
 
Auto scaling applications in 10 minutes (CakeFest 2013)
Auto scaling applications in 10 minutes (CakeFest 2013)Auto scaling applications in 10 minutes (CakeFest 2013)
Auto scaling applications in 10 minutes (CakeFest 2013)
 
Sleep better by automating monitoring for your app (CakeFest 2013)
Sleep better by automating monitoring for your app (CakeFest 2013)Sleep better by automating monitoring for your app (CakeFest 2013)
Sleep better by automating monitoring for your app (CakeFest 2013)
 
Optimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x AppsOptimizing CakePHP 2.x Apps
Optimizing CakePHP 2.x Apps
 
Creative Web 2.0 Learning
Creative Web 2.0 LearningCreative Web 2.0 Learning
Creative Web 2.0 Learning
 
Investing in South Africa - IAR Multicultural Summit
Investing in South Africa - IAR Multicultural SummitInvesting in South Africa - IAR Multicultural Summit
Investing in South Africa - IAR Multicultural Summit
 
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013Ft Riley Winter Guide Dec 2012, Jan and Feb 2013
Ft Riley Winter Guide Dec 2012, Jan and Feb 2013
 
Home sales increased last year january 2012
Home sales increased last year january 2012Home sales increased last year january 2012
Home sales increased last year january 2012
 
4 unidad
4 unidad4 unidad
4 unidad
 
Social media- Military Voters and Social Media
Social media- Military Voters and Social MediaSocial media- Military Voters and Social Media
Social media- Military Voters and Social Media
 
ASER 2010
ASER 2010ASER 2010
ASER 2010
 
11 APRIL 2012 1HBCT Weekly News Update
11 APRIL 2012 1HBCT Weekly News Update11 APRIL 2012 1HBCT Weekly News Update
11 APRIL 2012 1HBCT Weekly News Update
 
The State of Social 2012
The State of Social 2012The State of Social 2012
The State of Social 2012
 
Evaluation Question 1.
Evaluation Question 1. Evaluation Question 1.
Evaluation Question 1.
 
14 Nov 2012 1ABCT Weekly Newsletter
14 Nov  2012 1ABCT Weekly Newsletter14 Nov  2012 1ABCT Weekly Newsletter
14 Nov 2012 1ABCT Weekly Newsletter
 
bio5.1
bio5.1bio5.1
bio5.1
 
bladder cancer
bladder cancerbladder cancer
bladder cancer
 
Home away from home sjc-shopping-observation lab
Home away from home   sjc-shopping-observation labHome away from home   sjc-shopping-observation lab
Home away from home sjc-shopping-observation lab
 

Ähnlich wie Dobre przepisy na cake php

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymDariusz Jagieło
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?Michał Dudak
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Laravel Poland MeetUp
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...Future Processing
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Natalia Stanko
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach3camp
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyqbeuek
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Quick-Solution
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomTomasz Dziuda
 
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Ewa Stepien
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowychTomasz Borowski
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe MicroservicesKonrad Król
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Dariusz Kacban
 

Ähnlich wie Dobre przepisy na cake php (20)

HYC - Angular stań się kanciastym
HYC - Angular stań się kanciastymHYC - Angular stań się kanciastym
HYC - Angular stań się kanciastym
 
ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?ITAD BB 2014 - ASP.NET 5 - What's new?
ITAD BB 2014 - ASP.NET 5 - What's new?
 
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%Jak przyspieszyłem aplikację produkcyjną o ponad 40%
Jak przyspieszyłem aplikację produkcyjną o ponad 40%
 
Jaki framework wybrać
Jaki framework wybraćJaki framework wybrać
Jaki framework wybrać
 
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
[Quality Meetup#12] P. Podsiadlik, R. Peroń - Testy regresji z perspektywy pi...
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Google App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjachGoogle App Engine i Google Play Services w Twoich aplikacjach
Google App Engine i Google Play Services w Twoich aplikacjach
 
Jak stworzyć udany system informatyczny
Jak stworzyć udany system informatycznyJak stworzyć udany system informatyczny
Jak stworzyć udany system informatyczny
 
Bohater UI bez front end developera ?
Bohater UI bez front end developera ?Bohater UI bez front end developera ?
Bohater UI bez front end developera ?
 
Testowanie na 101 sposobów
Testowanie na 101 sposobówTestowanie na 101 sposobów
Testowanie na 101 sposobów
 
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistomWordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
WordUp Gdynia - Jak tworzyć motywy przyjazne użytkownikom i programistom
 
JavaScript, Moduły
JavaScript, ModułyJavaScript, Moduły
JavaScript, Moduły
 
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
Marek Sokołowski @ "Usługi PaaS oraz IaaS - przegląd dostępnego osprzętu i am...
 
PyLadies #6
PyLadies #6PyLadies #6
PyLadies #6
 
Produkcja aplikacji internetowych
Produkcja aplikacji internetowychProdukcja aplikacji internetowych
Produkcja aplikacji internetowych
 
Clean code w Ruby
Clean code w RubyClean code w Ruby
Clean code w Ruby
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Tech cafe Microservices
Tech cafe MicroservicesTech cafe Microservices
Tech cafe Microservices
 
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
Jak zarabiać na testowaniu oprogramowania(konferencja MeeTTech Piła 27.07.2016)
 

Dobre przepisy na cake php

  • 2. Po co w ogóle Framework?
  • 3. Po co w ogóle Framework? Nie wymyślajmy koła na nowo!
  • 4. 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
  • 5. 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 • ...
  • 6. MVC Model – View – Controller
  • 11. Ruby on Rails jako inspiracja
  • 12. Ruby on Rails jako inspiracja • W 2005 roku pojawił się framework Ruby on Rails • Frameworki PHP inspirowane RoR: • CakePHP • Code Igniter • Symfony • Biscuit • PHP on Trax • Pipeline
  • 14. 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
  • 15. CakePHP – zalety i wady • Model, Model, jeszcze raz Model • Można rozwiazać poprzez integracje z Doctrine • Enkapsulacja (brak public, protected, private) • ...
  • 16. Podstawy CakePHP • MVC • Components • Helpers • Behaviours • Plugins • Webroot
  • 17. Podstawy CakePHP • Nazewnictwo: • Nazwa tabeli i prefix controllera liczba mnoga (clients, users, ...) • Nazwa modelu liczba pojedyńcza (Client, User, ...)
  • 18. Podstawy CakePHP • AppController • AppModel • AppHelper
  • 19. Podstawy CakePHP – callbacks • Controller • beforeFilter • beforeRender
  • 20.
  • 21. CakePHP – odwzorowanie relacji • Proste i przyjemne gdy przestrzegamy konwencji w nazewnictwie • Automatyczne JOIN • counterCache
  • 22.
  • 23. Najczęściej popełniane błędy • Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses.
  • 24. 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 ...
  • 25. Najczęściej popełniane błędy • Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses. • Nie używanie helperów $this->Form i $this->Html w widokach.
  • 26.
  • 27. Najczęściej popełniane błędy • Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses. • Nie używanie helperów $this->Form i $this->Html w widokach. • Podawanie gotowego adresu url jako parametr do $this->Html->link() lub $this->Html->url() zamiast parametrów.
  • 28.
  • 29. Najczęściej popełniane błędy • Ładowanie masę modeli automatycznie przy tworzeniu Controllerze poprzez parametr $uses. • Nie używanie helperów $this->Form i $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.
  • 30. 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
  • 31. Dodatkowe porady • Wygodne ustawienie AppModel
  • 32. Dodatkowe porady • Wygodne ustawienie AppModel • Cachowanie skomplikowanych zapytań i wyników przekazanych do stronicowania.
  • 33.
  • 34. Dodajemy tą metodę do AppModel nie AppController Metoda _idBasedOnArgs() zwraca unikalny identyfikator wywołania metody z podanymi parametrami.
  • 35. Dodatkowe porady • Wygodne ustawienie AppModel • Cachowanie skomplikowanych zapytań i wyników przekazanych do stronicowania. • Wrappowanie Helperów
  • 36.
  • 37. 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)