Spawn Framework, czyli narzędzie dla najmniejszych

Spawn jest frameworkiem którego start miał miejsce w 2010 roku. Początkowo pisany dla programistów PHP 5.2, z końcem sierpnia 2011 roku wydany w wersji 2.0 opartej na przestrzeniach nazw. Główną myślą z jaką powstał Spawn Framework było stworzenie narzędzia dla młodszych programistów, freelancerów oraz agencji interaktywnych. Narzędzia które umożliwi w prosty i nieskomplikowany sposób szybko stworzyć stronę www, system cms/crm. Projekt jest w pełni polskim tworem, a jego strona mieści się pod adresem spawnframework.com.

Instalacja

Aby rozpocząć pracę z Spawnem należy pobrać paczkę z działu download. Istnieje również możliwość pobrania z githuba, jednak należy się liczyć z faktem, iż github służy jako „bałagarium” 🙂

Pobraną paczkę wypakowujemy do public_html, w przypadku pracy zdalnej na LAMP będzie to /var/www. Po rozpakowaniu ujrzymy cztery główne katalogi:

  • Application – katalog mieszczący naszą aplikację zgodnie z architekturą MVC (to tutaj składujemy kontrolery, modele, widoki)
  • Bin – katalog składujący dane prywatne, takie jak pliki konfiguracyjne czy logi.
  • Library – katalog mieszczący główne klasy spawna, tutaj również będziemy w przyszłości umieszczać nowe biblioteki takie jak mpdf czy swift mailer.
  • Media – katalog publiczny dostępny z poziomu przeglądarki, to w nim będziemy gromadzić nasze pliki css, js oraz grafikę.

Aby sprawdzić czy framework poprawnie nam się zainstalował, wchodzimy na 127.0.0.1. Naszym oczom ukaże się powitalna strona „Hello World”.

Spawn Framework - Hello World

Konfiguracja

Konfiguracja w Spawnie dzieli się na dwie części. Pierwszą podstawową są pliki znajdujące się w /Bin/Config. Znajdziemy tam pliki zawierające tablice php z konfiguracjami dla routera, bazy danych, itd. Druga część to Bootstrap znajdujący się w katalogu Application. Bootstrap jest klasą aktywującą która zostaje wykonana przed routingiem oraz uruchomieniem kontrolera. Jej zadaniem jest aktywacja metod rozruchowych naszej aplikacji. W metodach znajdziemy rejestrację połączenia z bazą, sesji czy firewalla, zapewniającego wygodne zarządzanie dostępem do poszczególnych części serwisu.

Tworzenie aplikacji

Aplikację tworzymy w katalogu Application. Znajdują się w nim 3 główne katalogi: Controller, Model oraz View.

  • Kontroler – przyjmuje dane wejściowe od użytkownika, na podstawie których zostaną załadowane odpowiednie modele oraz widoki,
  • Model – Odpowiada za część logiczną aplikacji,
  • Widok – jego zadaniem jest prezentacja danych.

Jak już pisałem Spawn jest tworzony na potrzeby freelancerów oraz agencji interaktywnych, czyli jest nastawiony na szybkie wytwarzanie oprogramowania. Zadanie swoje spełnia dzięki wielu uproszczeniom automatyzującym tworzenie oraz pracę z kodem. Aby lepiej zrozumieć o czym piszę, przyjrzyjmy się przykładowemu listingowi.

 

Powyższy kod wykorzystując ORM stworzy nam klasę reprezentującą tablicę news, pobierze z uwzględnieniem sortowania oraz wyszukiwarki potrzebne dane z bazy, na koniec wyświetli tablicę oraz paginację. Więcej na temat poszczególnych klas znajdziemy pod adresem: http://spawnframework.com/tutorial
A oto przykładowy rezultat naszego kodu:

Spawn Framework DataGrid
Spawn Framework DataGrid

Przyszłość

Spawn Framework stale się rozwija, każda zmiana jest owocem pracy tak twórcy frameworka, jak i innych programistów dzielących się swoimi pomysłami. Właśnie dlatego zachęcam każdego, kto korzysta z tego frameworka, aby dzielił się swoimi przemyśleniami, a jeśli posiada wiedzę i czas, zachęcam do współtworzenia Spawna również od strony kodu.

Spawn obecnie jest tworzony dla PHP 5.3, w przyszłym roku przejdzie na PHP 5.4 (lub PHP 5.5, jeśli zrobią to hostingi). Już teraz jego kod jest analizowany pod względem implementacji traitsów, usprawnień, wydzielenia generatorów modeli oraz nowych klas abstrakcji.

Podsumowanie

W tym wpisie przybliżyłem wam czym jest Spawn Framework, oraz dla kogo został stworzony. W najbliższym czasie opiszę jak w prosty i szybki sposób tworzyć w nim konkretne części aplikacji, takie jak panel admina czy firewall. Wszystkich zainteresowanych nauką Spawna zapraszam na stronę projektu.

Programista webdeveloper, miłośnik oraz aktywny działacz open-source, od lat związany z społecznością php.

  • Rafał

    Bardzo ciekawy FW i co najważniejsze polski. Dobre rozwiązanie dla ludzi początkujących (takich jak ja).
    Miałbym propozycję, czy byłaby możliwość kontynuowania projektu z kohany (tworzenie serwisu krok po kroku) na tym framework’u?

  • el_passo

    Hmm.. a powiedz mi Paweł, jeśli chciałbym użyć ORM ale względem innego pola niż ID, jakie kroki powinienem poczynić? 🙂

    No i oczywiście czekamy na kolejne artykuły 🙂

    • spawnm

      Orm akceptuje wszystkie metody z klasy Db, czyli prostego query buildera.
      Orm::factory(‚foo’)->where(‚inne_pole’, $zmienna)->find();

      Kolejne wpisy oczywiście się pojawią, będzie w nich dokładny opis jak stworzyć pełny serwis krok po kroku 🙂

      • martin

        Czy już jakiś zaryj kolejnego wpisu się kształtuje? 🙂

        Z chęcią bym zobaczył jak ciekawie rozwiązać problem struktury strony – frontend / backend.

        • Spawnm

          W przyszłym tygodniu planuję umieścić nowy wpis 🙂

  • Marcif

    Ciekawie to wszystko wygląda. Pierwszy raz w ogóle słyszę o tym projekcie. Proponuję założyć jakieś forum wzorem tego z Laravela plus ew. Twitter bo G+ jest straszne.

    • nrm

      G+ jest super 😉 Forum masz tutaj: http://forum.webmastah.pl -> dział frameworki -> inne.

    • spawnm

      Nie wiem co jest złego w g+, wyraźny podział na kategorie itd. Powiedział bym że to twitter jest jednym wielkim bałaganem.
      Strona społeczności Spawna jest pod adresem: https://plus.google.com/u/0/communities/110313636693624712942
      Dodatkowo tak jak napisał @supernrm:disqus pytania można zadawać również na forum webmastah.
      Oczywiście jeśli ze względu na popularność pojawi się potrzeba stworzenia osobnego forum, na pewno zostanie to zrobione.

    • nAndy

      Projektów tego typu jest wiele: Slim, Silex, Flight. Według mnie największą różnicą Spawna jest to, że jest polski 😉

      • thejw23

        Nie znam Spawn Framework, ale wydaje mi się, że to nie jest Micro framework jak wszystkie które wymieniłeś, jest to „normalny” framework, porównywalny do CI, Kohana itd.

      • Konrad Pawlikowski

        Nie ma co porownywac tego potworka do Slima, Silexa czy Flighta 🙂 To troche nie ten poziom. Ot, ciekawostka. Ktos stworzyl zabawke. Podobno kazdy poczatkujacy programista musi napisac wlasny framework 😉 Mialoby to sens, gdyby powstalo na bazie czegos sprawdzonego, przetestowanego. Bylo np. tym czym jest CMF dla Symfony. Np. zbudowac narzedzie oparte na Slimie jesli ma byc lekko.

        Agencje interaktywne? Masz na mysli firmy ktore zatrudniaja licealistow do pisania „softu”?

        Powaznie polecam PHPCS i obmyslenie jakiejs architektury tego frameworka. Polecam tez uzycie composera i np. elementow symfony (Request, Response etc.).

        Jesli ktos szuka fajnego, prostego frameworka napisanego z glowa, dokumentacja, standardami, architektura, spolecznoscia i sprawdzonego to raczej powinien spojrzec w strone Laravela. Dla poczatkujacych Slim, swietnie napisany rowniez ze spolecznoscia i baza kodu.

  • Gorak

    Brak wsparcia dla composera, brak standardow kodowania, brak wsparcia dla środowisk produkcyjnych/developerskich, framework nietestowany unittestami, brak dokumetacji, brak spolecznosci kaze mi przyjac ten framework wylacznie jako ciekawostke.

    • spawnm

      Ale czytałeś wpis? Zaglądałeś na stronę? Czy taki tylko anonimowy hejcik?

      • Gorak

        Czytałem, oglądałem stronę i dokumentację, a przede wszystkim dość dokładnie oglądałem kod na githubie. Fajnie, że tworzysz coś swojego, ale po prostu piszę moje odczucia jako developera. Nie masz co się obrażać. Po prostu nie widzę zastosowania dla Spawna w obecnym stadium. Nie ma roadmapy, nie ma changelogów, żeby zobaczyć w którym kierunku idzie rozwój, 9/10 commitów na githubie opisane jako niewiele mówiące „up”. Nie bardzo rozumiem czemu miałbym wykorzystać Spawna zamiast np Silexa.

        Napisałem co musiałoby się zmienić żebyś mógł w ogóle zacząć myśleć o tym żeby Spawn choć trochę się spopularyzował.

        • spawnm

          Ten komentarz wygląda już sensowniej 😉
          Ok, dzięki za sugestie

        • thejw23

          Silex ma generowanie np. DataGrida tak jak Spawn? Nie myl tych frameworków, mają inny target.

          „Główną myślą z jaką powstał Spawn Framework było stworzenie narzędzia dla młodszych programistów, freelancerów oraz agencji interaktywnych.”

          Jak coś ma być postawione na szybko, prosta strona z błyskawiczną administracją, to standardy kodowania, środowiska DEV/PROD, UnitTesty (moim zdaniem) są zbędne. Trzeba znać umiar.

          Dokumentacja mogła by być lepsza, to fakt.

          • Potfur

            Jednakże fajnie by było mieć testy samego frameworka, pokazały by jakie podejście ma[ją] prowadzący.

          • spawnm

            Czym jest dla ciebie dokumentacja?
            Masz pierwsze kroki, doca, tutorial z opisem i przykładami poszczególnych klas oraz metod. Czego ci jeszcze brakuje?

          • Potfur

            Brakuje mi opisu co robi metoda lub po co ona jest, obecnie w kodzie trafiam na phpDoc ograniczający się do listy parametrów.
            Ułatwia to pisanie, niż ciągłe skakanie do dokumentacji.

          • Gorak

            >> Silex ma generowanie np. DataGrida tak jak Spawn?

            W Silexie możesz zintegrować sobie bundle z SF2 albo dowolną inną bibliotekę do datagrida którą znasz i która ma możliwość zaciągnągnięcia composerem. Co więcej, zewnętrzna biblioteka jest przetestowana i rozwijana przez zwykle większą grupę developerów.

            >> Trzeba znać umiar.

            Ale mi chodzi o standardy kodowania i unittesty w samym frameworku a nie w aplikacjach tworzonych z jego użyciem.

          • nrm

            Ja Goraka rozumiem, mam zbliżone zdanie, co oczywiście nie oznacza, że SpawnFW jest zły (dla mnie bardziej zły jest CI czy Cake 😀 ). Moim zdaniem najfajniej by było gdyby znaleźli się inni entuzjaści jak Paweł i wspólnie zaczęli coś z tym robić, właśnie eliminować te minusy, rozwijać, popularyzować itp. Na pewno taka polska produkcja MA rację bytu, nie mniej cały proces „rozkręcania” jest niezwykle trudny, a na pewno w zasadzie niemożliwy do wykonania w pojedynkę.

            Jednocześnie SpawnFW wkrótce będzie miał poważnego konkurenta bo startuje Hanariu (fork Kohany) i ma szanse namieszać. Może połączenie sił? 😉

          • sbl

            @potfur:disqus @Spawnm:disqus @Riu 😀 jako ekipa tworząca framework. Tego bym chciał.

          • Spawnm

            Też bym tego chciał, zwłaszcza że przydało by mi się kilka osób do pomocy przy Spawnie.

          • sbl

            No to może się ściupniemy do kupy i zrobimy coś wspólnego. Ja mogę na końcu pisać gotowe moduły do zestawu instalacyjnego. Jakieś mailery, systemy płatności, mechanizmy blogowe, cmsowe itd.
            I nie wiem czy akurat na Spawnie, myślałem o czymś zupełnie nowym, odrębnym, od podstaw zaprojektowanym z myślą o szybkim tworzeniu i wysokiej jakości / szybkości.
            No i nie zapominając o composerze i jakimś bardzo dobrym ORM.

          • Spawnm

            Spawn jest nastawiony na szybkie wytwarzanie prostych aplikacji. Jak chcesz to klepnij dla naszej grupki na g+ jakiś post z dokładniejszą wizją.

          • Potfur

            @sbl – Nowy, korzystający z dobrodziejstw 5.3+, implementujący porządne wzorce, z małą ilością zależności, łatwy i elastyczny w rozbudowie…

            It can be done 🙂

            Puść dyskusję na g+ i się obaczy. (jeszcze ofcę bym w takiej bandzie widział)

          • Riu

            Zostałem wywołany do więc się wypowiem. Na chwilę obecną chyba nie jest to możliwe. W przyszłości – może.

          • thejw23

            >> W Silexie możesz zintegrować sobie bundle z SF2 albo dowolną inną bibliotekę do datagrida którą znasz i która ma możliwość zaciągnągnięcia composerem.

            Tylko wtedy zapewne wchodzi Doctrine i kilka innych zależności (aby były formularze, walidacja itd) i generalnie jesteśmy nie na Silex ale prawie na Symfony2, którego jeszcze bardziej nie ma sensu porównywać ze Spawn, bo to już kompletnie inne targety.

            Tak patrząc to każdy jeden FW można uznać za gorszy niż Silex, bo do Silex wepniemy X,Y,Z i jest świetnie.

  • Marcin

    Przyjemny framework na pisanie małych appek. I jaki „codeigniterowy” 😉
    Póki co, będę mu się przyglądał. Zbyt wczesne stadium, by go w ogóle brać
    pod uwagę w bardziej komercyjnych projektach

  • piotrooo

    Skoro mówimy o polskich FW: https://github.com/letsdrink/ouzo

  • Tadeusz

    Ciekawy projekt. Nie przejmuj, się rób swoje. Czas pokaże co z tego wyniknie – ja trzymam kciuki.

Send this to a friend

webmastah.weekly
Cotygodniowa porcja linków ze świata WEBDEV BEZ spamu, TYLKO samo mięcho!
Zobacz poprzednie wydania. Dołącz do 2 tysięcy webdeveloperów!
HTML5, CSS3, JS (React, Angular, Ember, Vue), PHP, SQL