Wykryto działanie AdBlocka!

Prawdopodobnie masz właczonego Adblocka. Korzystanie z bloga jest całkowicie darmowe. Jeśli jednak chcesz docenić prace autora, wyłacz blokowanie reklam dla tej witryny, aby jeszcze bardziej zmotywowac autora do dalszej pracy oraz częstszej publikacji artykułów.

Dziękuje :)

Treść główna bloga

Artykuły

Prosty instalator systemu w PHP


Instalator systemuW dzisiejszych czasach istnieje ogromna ilość systemów zarządzania treścią. Jedne są przeznaczone do tworzenia for internetowych, drugie zaś do tworzenia mniej lub bardziej zaawansowanych portali, inne natomiast umożliwiają pisanie własnego bloga.
W większości przypadków, system trzeba najpierw zainstalować na swoim serwerze – służy do tego instalator systemu, dzięki któremu system ustawia podstawowe dane o witrynie jak: język strony, typ kodowania znaków, itd.

Kod na Github

W tym wpisie przedstawię Ci mój przykładowy instalator systemu. Większość skryptów tego typu, które można znaleźć w głębinach internecie jest oparta na max 2/3 plikach i cały kod jest upakowany w pliku index.php, który zawiera kilka prostych funkcji. W moim skrypcie plik ten pełni jedynie formę inicjalizacyjną.

Oto struktura plików:

  • index.php
  • .htaccess
  • php/: installer.class.php, config.class.php
  • parts/: start.part.php, basic.part.php, database.part.php, finish.part.php
  • config/: config.ini
  • css/: core.css
  • js/ core.js

W pliku index.php znajduje się blok, który dołącza potrzebne pliki oraz przekierowuje na stronę początkową instalatora.

Skrypt, który dodaje dane do pliku config.ini oraz przekierowuje na poszczególne podstrony znajduję się w pliku installer.class.php.

Struktura klasy:

  • $config – prywatna własność, która zawiera takie dane jak domyślna ścieżka do pliku *.ini, rozszerzenia plików z szablonami.
  • __construct() – konstruktor, który pobiera obiekt klasy config oraz wywołuje metodę initFile()
  • randomCode($length) – prosta metoda, która generuje daną ilość znaków. Wykorzystywana jest do do generowania losowych prefix’ów w konfiguracji bazy danych
  • route($step) – metoda, której zadaniem jest wyświetlanie kolejnej podstrony instalatora
  • initFile() – bardzo ważna metoda, która sprawdza czy istnieje folder config/ oraz plik config.ini – jeśli nie tworzy kompletną ścieżkę według danych z własności $config. Dodatkowo przekazuje pełną ścieżkę pliku *.ini do klasy Config. Mimo, że wywołanie metody znajduję się w konstruktorze to dzięki zastosowania sesji jest wywoływana tylko raz.
  • getPathData() – prosta metoda zwracająca poprzednią podstronę, która została odwiedzona przez użytkownika
  • basic($data) – metoda, która dodaje dane z formularza do pliku *.ini. Tworzy ona tablicę o nazwie basic w pliku konfiguracyjnym oraz dodaje kolejno poszczególne dane. Zwraca wartość boolean, w zależności od tego czy wszystko przebiegło prawidłowo
  • database($data) – bardzo podoba do metody basic. Na początku metoda sprawdza, czy wszystkie potrzebne dane zostały uzupełnione, następnie tworzy tablicę o nazwie database , dodaje dane do pliku i zwraca boolean, jeśli nie wystąpiły żadne błędy

Warto wspomnieć, że w obu klasach zostały użyte wyjątki, zatem mamy możliwość eleganckiej obsługi błędów oraz powiadomień.

Uwaga! Klasa config.class.php została lekko zmodyfikowana na potrzeby tego skryptu i nie jest identyczna z tą przedstawioną na githubie.

Pliki style.css oraz core.js zawierają odpowiednio kod odpowiedzialny za wygląd strony oraz za poprawne działanie formularzy.
Programista powinien zadbać o to aby po poprawnej instalacji jego systemu, pliki instalacyjne zostały usunięte. Przykładowo, na podstronie finish.part.php umieścić przekierowanie do pliku głównego owego systemu oraz uruchomić, np. funkcje, która usuwa wszystkie niepotrzebne foldery i pliki.

Wygląd pliku config.ini po przykładowej instacji:

Przydane funkcje:

EDIT:
[03-05-2016]
– naprawiono błędy kod w pliku index.php(zakomentowana linijka z kodem PHP7)

  • Czy dobre zrozumiałem, że za pomocą tego skryptu można w szybki sposób zainstalować CMS?

    • Taki jest ogólny zamysł skryptu. Jest on oczywiście bardzo prosty, jednak planuje jego modyfikacje, aby mógł być bardziej elastyczny