Docker – wstęp do konteneryzacji na przykładzie PHP i Laravela

Jednym z podstawowych i najczęściej wystepujących problemów współczesnego programowania jest czynność przekazania projektu innemu programiście. Odkąd zaczęto używać technologii zapisywania zależności pomiędzy wykorzystywanymi w projekcie bibliotekami (Composer dla PHP, Maven, Ant dla Javy), a także wersjonowania kodu, sam program przestał być głównym źródłem wszelkiego zła.

Na pierwsze miejsce wysunęło się jednak środowisko uruchomieniowe – system operacyjny, w przypadku PHP wersja interpretera, bazy danych czy też innych usług. Oznacza to, iż przekazując nasz kod innemu programiście, nie zawsze możemy być pewni, iż będzie on działał w sposób identyczny jak na naszym komputerze. Czasem, mimo nawet dokładnej analizie porównawczej środowisk, brak jednej biblioteki może zdecydowanie opóźnić lub też uniemożliwić szybkie rozpoczęcie pracy w nowym projekcie.

Osobiście, podobny problem napotkałem kilka tygodni temu, gdy otrzymałem do analizy projekt, który został napisany w Laravelu 4.2. Domyślnie, moje środowisko serwera oparte o interpreter PHP w wersji 7.2, nie pozwalał na uruchomienie przekazanego mi kodu. Problemem okazał się brak rozszerzenia Mcrypt, które to w wersji PHP 7.2 zostało całkowicie usunięte. Co prawda, rozszerzenie to zostało przeniesienione do biblioteki PECL i przy odrobienie wysiłku, można byłoby się pokusić o jego instalację, to jednak postanowiłem, iż by jak najlepiej odwzierciedlić środowisko produkcyjne, użyję konteneryzacji i całkowicie uniezależnie się od mojego środowiska opartego o PHP 7.2.

I właśnie w tym wpisie spróbujemy stworzyć nowe kontenery dla aplikacji laravelowej przy użyciu Dockera.

Continue reading

Własny package w Laravel

W programowaniu często spotykanym problemem  jest próba znalezienia złotego środka pomiędzy tworzeniem aplikacji monolitycznej, a aplikacji zbudowanej z modułow czy też mikroserwisów. W Laravelu, gdzieś pomiędzy tymi wyborami, leży mozliwość tworzenia własnych pakietów, czyli odrębnych jednostek kodu, które mogą być użyte w innych projektach. Taka potrzeba nie jest rzadkością – na pewno każdy z nas szybko znalazłby funkcjonalności, które chociaż raz zdublowały się w dwóch i więcej projektach. Przejdźmy do konkretów. Continue reading

Angular 5 – Wstęp

Jako, że pozytywnie udało nam się zbudować aplikację wypozyczalni sprzętu wodnego opartą o Laravela, co więcej mając przygotowany zalążek API, możemy wystartować z tworzeniem kodu aplikacji frontendowej. Jak się łatwo domyślić, będzie ona w całości oparta o Angular 4 (w praktyce będziemy już używac wersji 5). Nie przedłużając wstępu zabierzmy się do pracy, czyli spróbujmy zainstalować i przejrzeć startowy kod frameworka. Continue reading

Budujemy przykładową aplikację w Laravel – część 5, budujemy API

Dzisiejszy wpis poświęcony jest kolejnej części naszego systemu. Tym razem zajmiemy się budową API dostępowego, tak by w niedalekiej przyszłości połączyć się z nim za pomocą Angulara. Nasze API dotyczyć będzie przede wszystkim funkcjonalności związanych z administracją systemem. W opisywanej wersji będzie to kilkanaście metod dostępowych, wraz z rozwojem aplikacji, grupę tą poszerzymy oczywiście o kolejne, nowe żądania.

Do testowania API polecam świetny dodatek do Chrome o nazwie Postman, świetnie nadaje się do wysyłania zarówno prostych jak i bardziej rozbudowanych żądań.

Continue reading

Budujemy przykładową aplikację w Laravel – część 2, instalacja szablonu

Rozbudowując mój poprzedni wpis na temat szybkiego startu w Frameworku Laravel Szybki start z Laravel 5.4 chciałbym zaproponować kolejny cykl, w którym zbudujemy od podstaw konkretną aplikację – wypożyczalnię sprzętu wodnego. Aplikacja opierać się będzie na Laravel 5.4, przy czym panel zarządzający spróbujemy wykonać w Angular 5 – w tym celu potrzebować będziemy chociaż szczątkowego API. Zaczniemy jednak od tego, co widzieć będą nasi klienci., a sam panel administracyjny zostawimy na koniec. Do dzieła!

Continue reading

Struktura aplikacji w Laravel 5

Witam po krótkiej przerwie w tworzeniu poradnika dla Laravela. Dzisiejszy wpis chciałbym poświęcić projektowaniu, czy zaplanowaniu tak trywialnej czynności jaką jest obsługa formularza.

Problem wydaje się banalny i przy tym został już opisany w poprzednich wpisach o Laravelu. Mimo wszystko, poprzednie wpisy miały za zadanie zajmować się czysto funkcjonalnym podejściem, dziś chciałbym skupić się jak te elementy aplikacji typu CRUD można ułożyć, by było czysto, by można było łatwo naszą aplikację rozbudować, a przede wszystkim gruntownie zautomatyzować testy. W tym odcinku, z premedytacją nie podaję całego kodu, nie próbuję tworzyć gotowej aplikacji, a wręcz celowo będę stosował więcej pseudokodu. Chcę by wpis był raczej opisem struktury prostej aplikacji crudowej, a nie jego kompletnym przykładem. Continue reading