Tworzenie i uruchamianie projektu PHPixie na macOS przy użyciu ServBay
PHPixie to lekki i wydajny framework PHP zaprojektowany z myślą o szybkim tworzeniu aplikacji internetowych. Wykorzystuje wzorzec projektowy HMVC (Hierarchical Model-View-Controller), oferując przejrzystą strukturę kodu oraz wysoką wydajność. PHPixie cieszy się popularnością wśród deweloperów dzięki swojej prostocie, elastyczności i szybkości działania.
Główne cechy i zalety PHPixie
- Lekkość: Sercem PHPixie jest minimalistyczny system, zawierający wyłącznie niezbędne komponenty do budowy aplikacji, co przekłada się na szybki start i działanie.
- Wysoka wydajność: Framework został zaprojektowany z myślą o efektywności i potrafi sprawnie obsługiwać wiele równoczesnych żądań, dzięki czemu sprawdza się w wymagających projektach.
- Łatwość nauki: Przejrzyste API oraz bogata dokumentacja sprawiają, że programiści szybko opanowują użycie frameworka.
- Elastyczność: Luźna architektura pozwala na swobodne integrowanie i wybieranie bibliotek oraz komponentów zgodnie z potrzebami projektu.
- Aktywna społeczność: Za PHPixie stoi zaangażowana społeczność, która dostarcza wartościowe rozszerzenia i wsparcie.
PHPixie umożliwia sprawne budowanie nowoczesnych aplikacji webowych wysokiej jakości — nadaje się zarówno do małych, jak i rozbudowanych projektów korporacyjnych.
Tworzenie i uruchamianie projektu PHPixie w ServBay
W tym przewodniku dowiesz się, jak za pomocą oferowanego przez ServBay lokalnego środowiska developerskiego utworzyć i uruchomić projekt PHPixie. Skorzystamy z wbudowanego środowiska PHP, menedżera zależności Composer oraz funkcji Witryny w ServBay do konfiguracji serwera WWW. Przejdziemy także przez podstawowe kroki integracji z bazą danych i systemami cache.
Wymagania wstępne
- ServBay jest zainstalowany i uruchomiony na macOS. ServBay integruje PHP, Composer, różne bazy danych (MySQL, PostgreSQL, MongoDB, Redis itd.) oraz serwer WWW Caddy.
- Podstawowa znajomość obsługi terminala.
Tworzenie projektu PHPixie
Zalecana ścieżka przechowywania witryn
ServBay zaleca przechowywanie lokalnych projektów webowych w katalogu /Applications/ServBay/www
, co ułatwia zarządzanie oraz kontrolę uprawnień dostępowych ServBay.
- Sprawdź, czy Composer jest dostępny: ServBay zawiera Composer od razu po instalacji — nie musisz go osobno instalować. Zweryfikujesz to za pomocą polecenia w terminalu:
composer --version
. - Utwórz katalog projektu: W zalecanej lokalizacji ServBay stwórz nowy folder na projekt PHPixie i przejdź do niego:bash
cd /Applications/ServBay/www mkdir servbay-phpixie-app cd servbay-phpixie-app
1
2
3 - Stwórz projekt PHPixie z Composer: W katalogu projektu uruchom polecenie Composer pobierające szablon PHPixie:bashComposer pobierze PHPixie wraz z wszystkimi zależnościami do bieżącego katalogu.
composer create-project phpixie/project .
1
Konfiguracja serwera WWW
Do ustawienia serwera Caddy i obsługi projektu PHPixie użyj funkcji Witryny w ServBay.
Otwórz interfejs aplikacji ServBay.
Przejdź do listy Witryny (Websites).
Kliknij, aby dodać nową witrynę.
Wypełnij dane konfiguracyjne:
- Nazwa: na przykład
My First PHPixie Dev Site
(nazwa identyfikująca projekt w ServBay). - Domena: np.
servbay-phpixie-test.local
(adres do odwiedzenia w przeglądarce podczas developmentu). - Typ witryny: wybierz
PHP
. - Wersja PHP: wybierz preferowaną, np.
8.3
. - Katalog główny witryny (Document Root): wskaż katalog
web
Twojego projektu:/Applications/ServBay/www/servbay-phpixie-app/web
.
Dlaczego katalog
/web
?Plik startowy projektu PHPixie to
web/index.php
. Ze względów bezpieczeństwa i dobrych praktyk serwer WWW powinien wskazywać bezpośrednio na katalogweb
, a nie główny folder projektu. Chroni to przed dostępem do poufnych plików (jak pliki konfiguracyjne czy katalogvendor
) przez przeglądarkę.- Nazwa: na przykład
Zapisz konfigurację. ServBay automatycznie ustawi Caddy oraz zaktualizuje plik hosts na Twoim komputerze (jeśli to konieczne), dzięki czemu domena
servbay-phpixie-test.local
będzie wskazywać na lokalny serwer ServBay.
Szczegółowe instrukcje znajdziesz tutaj: Dodawanie pierwszej witryny.
Dodanie przykładowego kodu
Aby sprawdzić działanie projektu oraz zaprezentować integrację z bazą danych i systemami cache, dodamy przykładowy kod.
Utwórz przykładowy kontroler: Umieść poniższy kod w pliku
src/App/HTTP/Controller/Home.php
. Jeśli folder lub plik nie istnieje, stwórz je ręcznie.php<?php namespace App\HTTP\Controller; use PHPixie\HTTP\Request; use PHPixie\Template; use PHPixie\Database\Query; // Dodanie klasy Query class Home extends \PHPixie\Controller { protected $template; public function __construct(Template $template) { $this->template = $template; } // Akcja domyślna — strona główna public function action_index(Request $request) { // Renderowanie szablonu assets/templates/app/home.php return $this->template->render('app:home'); } // Akcja przykładowa — Memcached public function action_memcached(Request $request) { $cache = $this->components->cache(); $cache->set('key', 'Hello Memcached from ServBay!', 60); // Zapisz dane na 60 sekund $value = $cache->get('key'); // Pobierz dane return $this->response()->string($value); // Zwróć jako tekst } // Akcja przykładowa — Redis public function action_redis(Request $request) { $redis = $this->components->redis(); $redis->set('key', 'Hello Redis from ServBay!'); // Zapisz dane $value = $redis->get('key'); // Pobierz dane return $this->response()->string($value); // Zwróć jako tekst } // Akcja przykładowa — dodanie użytkownika do MySQL/PostgreSQL public function action_add_user(Request $request) { // Uzyskaj obiekt zapytań do bazy danych $query = $this->components->database()->query(); // Wstaw dane nowego użytkownika do tabeli 'users' $query->insert('users')->data([ 'name' => 'ServBay Demo User', 'email' => 'demo-' . uniqid() . '@servbay.test', // Unikalny adres e-mail ])->execute(); // Wykonaj zapytanie return $this->response()->string('User added successfully.'); // Zwrot komunikatu sukcesu } // Akcja przykładowa — wyświetlenie listy użytkowników z MySQL/PostgreSQL public function action_list_users(Request $request) { // Uzyskaj obiekt zapytań do bazy danych $query = $this->components->database()->query(); // Pobierz wszystkich użytkowników z tabeli 'users' $users = $query->select('*')->from('users')->execute()->fetchAll(); // Pobierz wyniki return $this->response()->json($users); // Zwróć listę użytkowników jako JSON } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67Utwórz przykładowy szablon: W pliku
assets/templates/app/home.php
umieść poniższy kod. Jeśli plik lub folder nie istnieje — utwórz.php<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Welcome to PHPixie on ServBay</title> <style> body { font-family: sans-serif; line-height: 1.6; margin: 20px; } h1 { color: #333; } p { margin-bottom: 15px; } code { background-color: #f4f4f4; padding: 2px 5px; border-radius: 4px; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } li a { text-decoration: none; color: #007bff; } li a:hover { text-decoration: underline; } </style> </head> <body> <h1>Welcome to PHPixie on ServBay</h1> <p>This page is being generated dynamically by your PHPixie application running on ServBay.</p> <h2>Przykładowe funkcje:</h2> <ul> <li><a href="/home/memcached">Testuj Memcached</a></li> <li><a href="/home/redis">Testuj Redis</a></li> <li><a href="/home/add_user">Dodaj użytkownika do bazy danych</a></li> <li><a href="/home/list_users">Wyświetl użytkowników z bazy danych</a></li> </ul> <p>Upewnij się, że wykonałeś odpowiednie kroki konfiguracji bazy danych i systemu cache.</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Odwiedzanie witryny
Po skonfigurowaniu witryny w ServBay i dodaniu przykładowego kodu możesz już odwiedzić przypisaną domenę w przeglądarce:
- Otwórz przeglądarkę i przejdź na
https://servbay-phpixie-test.local
. - Powinieneś zobaczyć stronę „Welcome to PHPixie on ServBay” oraz linki do przykładowych funkcji.
Jeśli nie można uzyskać dostępu do strony, sprawdź:
- Czy ServBay jest uruchomiony.
- Czy konfiguracja witryny (domena, typ, katalog główny) w ServBay jest prawidłowa.
- Czy plik hosts prawidłowo przekierowuje
servbay-phpixie-test.local
(w większości przypadków ServBay ustawia to automatycznie). - Czy aktywowana jest właściwa wersja PHP w ServBay.
Przykłady integracji z bazą danych i systemem cache
PHPixie posiada wbudowaną obsługę wielu baz danych oraz systemów cache. ServBay oferuje pakiety MySQL, PostgreSQL, Redis, Memcached i inne, z których możesz łatwo korzystać w projekcie PHPixie.
Ważne: Przed operacjami bazodanowymi upewnij się, że w ServBay uruchomiłeś odpowiednią usługę (np. MySQL lub PostgreSQL) i utworzyłeś bazę na potrzeby projektu. W podanym przykładzie baza nosi nazwę servbay_phpixie_app
. Możesz ją utworzyć za pomocą narzędzi administracyjnych (np. Sequel Ace, Postico, TablePlus) lub w terminalu. Domyślne dane logowania ServBay to często użytkownik root
i hasło password
(sprawdź ustawienia ServBay).
Konfiguracja połączenia z bazą danych
W zależności od wybranej bazy danych (MySQL lub PostgreSQL) edytuj plik assets/config/database.php
w folderze głównym projektu. Domyślny adres bazy w ServBay to 127.0.0.1
.
Przykład konfiguracji MySQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Dostosuj poniższy connection string zgodnie z Twoją konfiguracją ServBay i typem bazy
'connection' => 'mysql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Domyślny użytkownik ServBay
'password' => 'password', // Domyślne hasło (zmień, jeśli inne!)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Przykład konfiguracji PostgreSQL (assets/config/database.php
):
php
<?php
return [
'default' => [
'driver' => 'pdo',
// Dostosuj poniższy connection string zgodnie z Twoją konfiguracją ServBay i typem bazy
'connection' => 'pgsql:host=127.0.0.1;dbname=servbay_phpixie_app',
'user' => 'root', // Domyślny użytkownik ServBay
'password' => 'password', // Domyślne hasło (zmień, jeśli inne!)
'options' => []
]
];
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
Tworzenie tabeli bazy danych (migracje)
PHPixie oferuje narzędzia CLI do zarządzania migracjami, czyli wersjonowania struktury bazy danych.
Uruchom terminal: Przejdź do katalogu głównego projektu PHPixie:
bashcd /Applications/ServBay/www/servbay-phpixie-app
1Utwórz plik migracji: Skorzystaj z CLI PHPixie, aby utworzyć nową migrację dla tabeli
users
:bashphp pixie generate:migration create_users_table
1W katalogu
assets/migrations
pojawi się nowy plik PHP, którego nazwa zawiera znacznik czasowy.Edytuj plik migracji: Otwórz nowy plik (np.
YYYY_MM_DD_HHMMSS_create_users_table.php
) i uzupełnij metodyup()
idown()
:php<?php use PHPixie\Database\Migration; use PHPixie\Database\Schema\Table; class CreateUsersTable extends Migration { public function up() { // Utwórz tabelę 'users' za pomocą narzędzi schema $this->schema->create('users', function(Table $table) { $table->increments('id'); // Klucz główny, autoinkrementacja $table->string('name'); // Kolumna imienia $table->string('email')->unique(); // Kolumna e-mail, unikalna $table->timestamps(); // Kolumny created_at i updated_at }); } public function down() { // Usuń tabelę 'users' za pomocą narzędzi schema $this->schema->drop('users'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24Wykonaj migrację: Uruchom poniższe polecenie w katalogu projektu, aby utworzyć tabelę
users
:bashphp pixie migrate
1Jeśli operacja przebiegła pomyślnie, zobaczysz odpowiedni komunikat w terminalu i możesz to zweryfikować w narzędziu do obsługi bazy — w bazie
servbay_phpixie_app
powinna istnieć tabelausers
.
Korzystanie z relacyjnych baz danych (MySQL/PostgreSQL)
W przykładowym kontrolerze src/App/HTTP/Controller/Home.php
opisaliśmy już metody action_add_user
i action_list_users
ilustrujące pracę z bazą.
- Dodawanie użytkownika: Odwiedź
https://servbay-phpixie-test.local/home/add_user
, by dodać nowy wpis do tabeliusers
. - Wyświetlanie użytkowników: Odwiedź
https://servbay-phpixie-test.local/home/list_users
, by pobrać wszystkich użytkowników (w formacie JSON).
Konfiguracja i korzystanie z baz NoSQL (Memcached/Redis)
ServBay posiada zainstalowane Memcached i Redis oraz wymagane rozszerzenia PHP. Aby korzystać z nich w PHPixie — wystarczy odpowiednia konfiguracja.
Przykład konfiguracji Memcached (assets/config/cache.php
):
Utwórz/edytuj plik assets/config/cache.php
z poniższą zawartością:
php
<?php
return [
'default' => [
'driver' => 'memcached',
'servers' => [
[
'host' => '127.0.0.1', // Domyślny adres Memcached ServBay
'port' => 11211, // Domyślny port Memcached ServBay
'weight' => 100,
],
],
],
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Przykład konfiguracji Redis (assets/config/redis.php
):
Utwórz/edytuj plik assets/config/redis.php
:
php
<?php
return [
'default' => [
'hostname' => '127.0.0.1', // Domyślny adres Redis ServBay
'port' => 6379, // Domyślny port Redis ServBay
'timeout' => 0,
'database' => 0, // Indeks bazy Redis
],
];
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
Korzystanie z Memcached/Redis:
W przykładowym kontrolerze src/App/HTTP/Controller/Home.php
opisaliśmy już akcje action_memcached
oraz action_redis
.
- Testowanie Memcached: Przejdź na
https://servbay-phpixie-test.local/home/memcached
— zostanie zapisany przykładowy klucz w cache, a następnie wyświetlona jego zawartość. - Testowanie Redis: Przejdź na
https://servbay-phpixie-test.local/home/redis
— to samo z Redis.
Upewnij się, że odpowiednie usługi Memcached i Redis są uruchomione w ServBay.
Podsumowanie
Wykonując powyższe kroki, utworzyłeś, skonfigurowałeś i uruchomiłeś projekt PHPixie w lokalnym środowisku ServBay na macOS. Nauczyłeś się, jak utworzyć projekt przy pomocy Composer, jak skonfigurować serwer WWW przez funkcję Witryny w ServBay, jak dodać obsługę bazy danych i memcache oraz jak przetestować te funkcjonalności.
Integracyjne środowisko ServBay znacząco upraszcza proces konfigurowania PHP dla lokalnej pracy, pozwalając Ci skupić się na programowaniu i rozwoju Twojego projektu. Mamy nadzieję, że ten przewodnik pomoże Ci szybko rozpocząć pracę z PHPixie i rozwinąć Twój kolejny projekt webowy!