normanos 2.0

nie potrzebuję noża, nie mam żadnych celów zbrojnych, nie mam bejzbola ani wideł gnojnych

Zapewne parę osób zdziwi się skąd nagle u mnie taka zmiana: CodeIgniter zamiast cakePHP. Cóż, w cakePHP ukończyłem jeden średniej wielkości serwis typu “społecznościowego” ;) Budowa tego serwisu pokazała mi jak bardzo cakePHP mnie… ogranicza. Co chwile nowe problemy, szukanie rozwiązania pokrętnymi metodami, ciągłe studiowanie dokumentacji. Do tego cakePHP w zasadzie zmusza do stosowania ActiveRecord (przymusu nie ma, a bez tego traci się prawie całą funkcjonalność związaną z obsługa bazy przez “kejka”): nie ma jak pytania z 4 tabel, 40 sqli na stronę, zabawa z modelami i $hasOne, $hasMany, $belongsTo, $hasAndBelongsToMany. To potrafi skomplikować nawet najprostsze pytania. Do tego dodajcie sobie ścisłe powiązanie modeli z bazą, reżim w nazewnictwie i już macie odpowiedź dlaczego mój pierwszy większy projekt w cakePHP pisałem ponad 1,5 miesiąca i dlaczego był moim ostatnim pisanym w “kejku” :)

A Code Igniter? Cóż, już wcześniej się mu przyglądałem i teraz żałuję, że wtedy wybrałem CakePHP. CI to zupełna przeciwność “kejka”: łatwo, lekko i przyjemnie. Dowolność w tworzeniu relacji kontroler - model, żadnych z góry narzuconych reguł, niesamowita prostota i czytelność kodu, ogrom gotowych bibliotek i helperów, które można załadować w dowolnym miejscu wg. potrzeby, do tego logiczna i przejrzysta struktura. To wszystko razem powoduje, że pracę z CI można ruszyć “z kopyta”, szybko i sprawnie, a aby dorzucić swoją klasę czy też rozszerzyć istniejące wystarczy podstawowa znajomość PHP i 2 zdania wyjaśnienia w manualu - zupełne przeciwieństwo cakePHP gdzie trzeba dobrze poznać ten framework i jego ograniczenia.

CI to nie framework dla wszystkich: na pewno jedni skrytykują go za PHP4 (aczkolwiek cakePHP też jest w PHP4), innym będzie przeszkadzała ta zupełna dowolność tego co i gdzie się “ładuje”. Ja wiem jedno: CI to framework właśnie dla mnie, to jego szukałem i z nim pracuje mi się super szybko i przyjemnie.

Nie jestem teoretykiem (“Nie wiem, nie znam się, nie orientuję się, zarobiony jestem”), nie będę porównywał technicznie co ma jeden, a czego nie ma drugi. Jestem praktykiem, mogę porównać ile i w jaki sposób pisałem serwis na cakePHP, a ile i z jakim skutkiem w Code Igniter. I w tym moim prywatnym porównaniu CI miażdży konkurencję. CI mówi: hej normanos, jestem twoim frameworkiem :)

Zainteresowanych odsyłam do:
- strony Code Ignitera
- polskiego kursu Code Ignitera autorstwa Riklaunima
- screencastu: wprowadzenie do CodeIgnitera (.mov)
- screencastu: blog w 20 minut (.mov)

  • 15 Comments
  • Filed under: PHP
  • cakePHP: debug oraz redirect

    Dzisiaj 2 banalne rady, w zasadzie kwestie o których powinien każdy wiedzieć, jednak jak pokazują posty na forum.php.pl z zeszłego tygodnia wcale tak nie jest.

    Pierwsza sprawa to ustawienie stałej DEBUG (/app/config/core.php) na coś więcej niż 0 (sugeruje 2). Zaskakujący jest fakt, iż większość osób, które pisały do mnie na owym forum z prośbą o pomoc “bo w cake nic nie działa i nic się nie dzieje” miały DEBUG ustawiony na 0 (no to rzeczywiście nic dziwnego, że kawałka komunikatu o błędach nie zobaczyły ;) ). Swego czasu pytałem się też kilku “kejkowców” jak tam u nich wygląda sprawa z ilością pytań sql. I tu to samo: nie mieli pojęcia bo… w ogóle nie pracowali na włączonym DEBUGu. Nie powiem, jestem zdziwiony, że w ogóle tak mozna napisać całą aplikację :)

    Druga rada to też wynik postów na forum. Pamiętajcie aby po $this->redirect(’/kontroler/akcja/’); zawsze wstawić exit();! Brak exita to musi być dość powszechny błąd skoro nawet było o tym na piekarence :)

  • 2 Comments
  • Filed under: PHP
  • cakePHP: findABaker();

    Autor bloga cakebaker uruchomił kilka dni temu serwis zleceń związanych z cakePHP. Nie wróżę tej stronie świetlanej przyszłości: autor chce wkrótce pobierać 20 zielonych za ogłoszenie (a przy zerowej liczbie ogłaszających jest to dosyć głupie i… bezczelne) :). Pomijam już fakt, iż klient na ogół nie mówi “zróbcie mi sajta w cakePHP” bo taki serwis ogłoszeniowy można wykorzystać do np. skompletowania większego zespołu, tudzież rozbudowania działającej już “kejkowej” aplikacji.

    Przy okazji tej ciekawostki zaczynam nowy cykl na moim blogu: garść porad (krótkie, nieskomplikowane, pomocne przy budowaniu rozbudowanych sajtów) związanych z cakePHP. Powoli kończę (75% done) swój pierwszy serwis oparty na tym frameworku i można powiedzieć, że podstawy mam za sobą.

  • 19 Comments
  • Filed under: PHP
  • Jak zostałem piekarzem…

    cakePHP… czyli subiektywny przegląd frameworków :)

    Dawno nic nie pisałem, a to (standardowo) ze względu na masę pracy: troche zleceń, trochę własnej roboty. Właśnie z powodu małej ilości czasu zainteresowałem się gotowymi frameworkami w PHP. Wprawdzie jakiś czas temu zacząłem pisać coś swojego (oparte na PDO i OPT) ale wiele z tego nie wyszło. Raz: nie posiadam odpowiednio sporej wiedzy aby napisać to porządnie, a dwa: nie da się tego napisać szybko.

    Przegląd frameworków zrobiłem jakis czas temu (nawet wtedy z cakePHP pożyczyłem sobie bardzo fajną obsługę sesji) ale wtedy ostatecznie nic nie wybrałem ze względu na dosyć specyficzne wymagania. Tym razem na lekturę różnych opracowań i poszczególnych dokumentacji poświęciłem kilka dni. Z listy 10 PHPowych frameworków wybrałem 3 które mi się spodobały i o których słyszałem najwięcej tj. cakePHP, Code Igniter i Symfony.
    (more…)

  • 9 Comments
  • Filed under: PHP