VulCode

PHP: co w nim budujemy i dlaczego

PHP spotykamy tam, gdzie żyje hosting: w WHMCS, Pterodactylu i jego motywach, w małych stronach bez frameworka i w API, które ma działać na każdym serwerze.

PHP na prawdziwych zrzutach

Projekty z tej strony na ekranach z portfolio i case studies, każdy z krótkim opisem i drogą do pełnego.

Most rozliczeniowy w panelu Flaem: połączony system rozliczeń i produkty przypisane do planów

Flaem: moduły rozliczeniowe

Moduły WHMCS, HostBill, Paymenter i Blesta z testami.

Kiedy PHP, a kiedy coś innego

Technologia ma pasować do miejsca, w którym kod będzie działał, i do zespołu, który go przejmie. Ostateczny wybór zapada przy wycenie, razem z Tobą.

Wybieramy PHP

Moduły do systemów rozliczeń

Moduły Flaem dla WHMCS, HostBill, Paymenter i Blesta mają testy w PHPUnit. Te systemy ładują dodatki tylko w PHP, więc to jedyna droga, żeby hosting sprzedawał usługi z platformy.

Motywy i dodatki do Pterodactyla

Panel Pterodactyla stoi na Laravelu. Motyw WaveHost to panel gier w barwach klienta, zbudowany na kodzie Pterodactyla.

Małe API bez kroku budowania

ghapi to API statystyk GitHuba w czystym PHP, bez frameworka. Wdrożenie to skopiowanie plików, a kolektor czyta tylko gałęzie, które się przesunęły.

Strony na każdym hostingu

Strona DualFroz ma prosty router i HTML przygotowany na serwerze. Treść jest w pierwszej odpowiedzi, a strona działa na każdym hostingu z PHP.

Sklep bez ciężkiego frameworka

bazaar ma katalog, koszyk, płatność przez Stripe Checkout, konta klientów i panel admina na własnym mikroframeworku. Zapytania idą wyłącznie przez przygotowane instrukcje PDO, a formularze mają ochronę CSRF.

Przejęcie istniejącego projektu

Działający system w PHP przejmujemy od przeglądu kodu i listy ryzyk. Często taniej jest go naprawić i rozwijać, niż przepisywać od zera.

Tak piszemy w usługach

Wybieramy coś innego

Nowa platforma na lata

Platforma, która ma rosnąć latami, dostaje rdzeń w Ruście i panel w TypeScripcie. PHP obsługuje jedno żądanie i kończy pracę, a platformie potrzebne są stale działające procesy i kolejki.

Połączenia na żywo i głos

Klasyczny PHP kończy pracę po każdym żądaniu, więc nie trzyma otwartych połączeń. Serwery Plazera z WebSocketem i rozmowami głosowymi są w Go.

Agent na serwerze

Agent na cudzej maszynie nie może zależeć od zainstalowanego PHP i jego rozszerzeń. Agenty Flaem są w Go, jako pojedyncze pliki.

Panel z konsolą i wykresami

HTML z serwera wystarcza prostej stronie, ale panel z konsolą na żywo i wykresami piszemy w React i TypeScripcie. Tak są zbudowane panel Flaem i panele klienta.

Bot Discord

Bot musi stale trzymać połączenie z Discordem, a PHP uruchamiany na żądanie do tego nie pasuje. Boty piszemy w Pythonie z discord.py albo w TypeScripcie.

Długie zadania w tle

Zakładanie serwerów i synchronizacje trwają dłużej niż jedno żądanie. W WaveHost robi to osobny proces z kolejkami BullMQ w TypeScripcie, a we Flaem usługi w Ruście i Go.

PHP w porównaniu, punkt po punkcie

Każda potrzeba w jednym wierszu, a obok siebie to, co w tej sprawie daje każda z dwóch kolumn.

SytuacjaPHPNode albo Rust

Moduł do WHMCS

Jedyna opcja
Nie da się

Hosting współdzielony

Działa wszędzie
Rzadko dostępny

Nowa platforma na lata

Możliwe, ale nie pierwszy wybór
Pierwszy wybór

Wdrożenie

Skopiowanie plików
Zbudowanie i uruchomienie usługi

Otwarte połączenia na żywo

Wymaga osobnego serwera
Wbudowane w działający proces

Motyw albo dodatek do Pterodactyla

Laravel, czyli PHP
Tylko interfejs w React

Zadania w tle

Osobny worker i harmonogram
Proces działa cały czas

PHP w całym naszym kodzie

Ile linii napisaliśmy w PHP i jaką część wszystkiego, co napisaliśmy, to stanowi. Liczymy linie dodane w commitach naszych repozytoriów, osobno dla każdego języka.

130 914
linii napisanych w PHP
2,4%
wszystkich linii, które napisaliśmy
6
repozytoriów z kodem w PHP
7.
miejsce wśród 26 języków

Biblioteki, na których stoją te projekty

Z plików zależności naszych repozytoriów. Przy każdej jedno zdanie o tym, do czego jej używamy.

Strona DualFroz na telefonie
  • PHP 8.2 bez frameworka

    API statystyk i strona osobista.

  • Laravel

    Pterodactyl i jego motywy.

  • PHPUnit

    Testy modułów rozliczeniowych.

  • sodium i openssl

    Kryptografia z biblioteki standardowej.

Nasze zmiany w cudzych projektach w PHP

32 przyjęte zmiany w 20 repozytoriach. Opiekunowie tych projektów przejrzeli nasz kod i włączyli go do swojego.

Tydzień po tygodniu

Udział języków w naszych zmianach

Inne technologie i gdzie działa ich kod

Każda ma swoją stronę z projektami na prawdziwych ekranach i porównaniem z alternatywami.

Strony i aplikacje webowe

To, co widać w przeglądarce, i jego zaplecze.

Aplikacje mobilne

Natywne klienty Android i iOS.

Aplikacje desktopowe

Programy na Windows, macOS i Linux bez przeglądarki w środku.

Backend i infrastruktura

Rdzenie, agenty na serwerach i usługi czasu rzeczywistego.

Boty i automatyzacje

Discord, skrypty i monitoring.

Pytania o PHP

Odpowiedzi o PHP, naszych projektach i liczbach na tej stronie.

Projekt w PHP?

Opisz, co chcesz zbudować. Odpiszemy w godzinę i powiemy wprost, czy ta technologia jest dobrym wyborem.