HOME > PHP

Programowanie obiektowe w PHP

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ę.

Podobne artykuły