Właściwie to coś takiego jak kurs programowania obiektowego php nie ma sensu. Obiektowość to tylko sposób myślenia. Dobrym przykładem jest używanie bazy danych w oparciu o własną klasę:
class Database {
var $pdo;
function __construct() {
try {
$this->pdo = new PDO(DB_DRIVER . ':host=' . DB_HOST . ';dbname=' . DB_NAME, DB_USERNAME, DB_PASSWORD);
$this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo->query('SET CHARSET utf8');
}
catch(PDOException $e) {
}
}
function __destruct() {
}
function query($sql, $userData=NULL) {
try {
$result = $this->pdo->query($sql);
$return = $result->fetchAll(PDO::FETCH_CLASS);
return $return ? $return : "Nic nie znaleziono";
}
catch(PDOException $e) {
}
}
}
Jeśli nagle stwierdzisz, że nie chcesz używać PDO bo wolisz PEARDB to wystarczy przepisać jedną klasę nie ruszając całej reszty kodu.
Moim zdaniem programowanie obiektowe jest jak klocki - najpierw wytłaczamy klocki z plastiku a później budujemy co trzeba.
Innym przykładem jest pasek boczny na stronie.
Załóżmy, że taki pasek składa się z modułów, które mają postać:
<section id="module_nazwaKlasy">
<header>Jakaś widoczna nazwa panelu</header>
Dynamicznie generowany środek modułu
</section>
Napiszmy więc klasę bazową "Module":
class Module {
var $name;
var $content;
function __toString() {
return "
<section id=\"module_{$className}\">
<header>{$this->name}</header>
<div class=\"content\">
{$this->content}
</div>
</section>
";
}
}
Później klasy szczególnych modułów piszemy prosto:
class Example extends Module {
function __construct() {
$this->name = "Test";
$this->content = "Test czegoś <b>BOLD</b>";
}
}
Żeby skorzystać z tego kodu i wygenerować kod całego panelu używamy:
$modules = array('Example'); //w tej tablicy są nazwy wszystkich klas modułów, których chcemy używać na naszym panelu bocznym $finalHTML = '';
foreach($modules as $module) {
$temp = new $module;
$finalHTML .= $temp;
}