Tworzenie stron internetowych - poradnik
Programowanie obiektowe w PHP polega na tworzeniu klas, które opisują obiekty i definiują ich cechy i zachowania. Możesz tworzyć nowe obiekty na podstawie klas, a następnie używać ich do wykonywania różnych zadań w aplikacji. Programowanie obiektowe daje Ci możliwość zorganizowania kodu w sposób, który jest łatwiejszy do zrozumienia i utrzymania, a także umożliwia lepsze wykorzystanie ponownego wykorzystania kodu.
Przykład:
class Osoba {
// atrybuty klasy
public $imie;
public $nazwisko;
// metoda klasy
public function przedstawSie() {
return "Cześć, nazywam się $this->imie $this->nazwisko";
}
}
// utworzenie nowego obiektu osoby
$osoba1 = new Osoba();
$osoba1->imie = 'Jan';
$osoba1->nazwisko = 'Kowalski';
// wywołanie metody obiektu
echo $osoba1->przedstawSie(); // wyświetli: "Cześć, nazywam się Jan Kowalski"
Aby połączyć klasy w PHP, możesz użyć dziedziczenia. Dziedziczenie pozwala na stworzenie nowej klasy, która dziedziczy wszystkie atrybuty i metody z innej klasy. Nowa klasa nazywana jest klasą potomną, a klasa, z której dziedziczy, nazywana jest klasą macierzystą.
Przykład:
class Osoba {
// atrybuty klasy
public $imie;
public $nazwisko;
public $wiek;
// metoda klasy
public function przedstawSie() {
return "Cześć, nazywam się $this->imie $this->nazwisko, mam $this->wiek lat";
}
}
// klasa Pracownik dziedziczy po klasie Osoba
class Pracownik extends Osoba {
// atrybuty klasy
public $stanowisko;
public $pensja;
// metoda klasy
public function opiszSie() {
return "Jestem pracownikiem i zajmuję stanowisko $this->stanowisko. Zarabiam $this->pensja zł miesięcznie.";
}
}
// utworzenie nowego obiektu pracownika
$pracownik1 = new Pracownik();
$pracownik1->imie = 'Jan';
$pracownik1->nazwisko = 'Kowalski';
$pracownik1->wiek = 35;
$pracownik1->stanowisko = 'kierownik';
$pracownik1->pensja = 8000;
// wywołanie metod obiektu
echo $pracownik1->przedstawSie(); // wyświetli: "Cześć, nazywam się Jan Kowalski, mam 35 lat"
echo $pracownik1->opiszSie(); // wyświetli: "Jestem pracownikiem i zajmuję stanowisko kierownik. Zarabiam 8000 zł miesięcznie."
Jak wywołać metody obiektu w naszej aplikacji? Musimy utworzyć plik index.php. Plik index.php
jest głównym plikiem aplikacji, który jest wywoływany przez przeglądarkę internetową. W programowaniu obiektowym w PHP, może on wyglądać następująco:
<?php
// wymaganie pliku z klasą
require_once 'klasa.php';
// utworzenie nowego obiektu na podstawie klasy
$obiekt = new Klasa();
// wywołanie metody obiektu
$obiekt->metoda();
?>
W powyższym przykładzie plik klasa.php
zawiera definicję klasy, z której utworzony zostaje obiekt. Następnie wywoływana jest metoda obiektu.
Oczywiście, kod w pliku index.php
może być bardziej skomplikowany, w zależności od potrzeb aplikacji. Może on np. zawierać kod do łączenia się z bazą danych, obsługi formularzy itp.
Jak utworzyć klasę do łączenia się z bazą danych?
Poniższy przykład pokazuje, jak utworzyć klasę do łączenia się z bazą danych za pomocą PDO (PHP Data Objects) w programowaniu obiektowym:
class Database {
// atrybuty klasy
private $host = 'localhost';
private $db_name = 'moja_baza';
private $username = 'root';
private $password = '';
private $conn;
// metoda klasy - łączenie z bazą danych
public function connect() {
$this->conn = null;
try {
$this->conn = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->db_name, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'Połączenie z bazą nie mogło zostać utworzone: ' . $e->getMessage();
}
return $this->conn;
}
}
Aby połączyć się z bazą danych, wystarczy utworzyć nowy obiekt na podstawie klasy Database
i wywołać metodę connect()
:
$database = new Database();
$conn = $database->connect();
Po połączeniu z bazą danych, możesz wykonywać zapytania SQL za pomocą obiektu $conn
, np.:
$stmt = $conn->prepare('SELECT * FROM tabela WHERE pole = :wartosc');
$stmt->execute(['wartosc' => $wartosc]);
$wynik = $stmt->fetchAll();
W powyższym przykładzie tworzymy obiekt PDOStatement
za pomocą metody prepare()
, a następnie wywołujemy metodę execute()
z odpowiednimi parametrami. Metoda fetchAll()
zwraca wszystkie wiersze wyniku jako tablicę.