Objektinio programų projektavimo šablonai PHP kalboje
Fabrikas
Fabriko šablonas leidžia objektų kūrimą vykdymo metu. Jis yra vadinamas Fabriko šablonu, kadangi yra atsakingas už objektų sukūrimą. Parametrizuotas Fabrikas gauna vardą klasės, kurią reikia sukurti.
<?php
class Example
{
// The parameterized factory method
public static function factory($type)
{
if (include_once 'Drivers/' . $type . '.php') {
$classname = 'Driver_' . $type;
return new $classname;
} else {
throw new Exception ('Driver not found');
}
}
}
?>
<?php
// Load a MySQL Driver
$mysql = Example::factory('MySQL');
// Load a SQLite Driver
$sqlite = Example::factory('SQLite');
?>
Singleton
Singleton šablonas naudojamas tokiose situacijose kuomet reikia sukurti vieną klasės instanciją. Dažniausias šio šablono panaudojimo atvejis yra duomenų bazės prisijungimas. Šio šablono įgyvendinimas leidžia programuotojui sukurti vieną instanciją, kuri gali būti nesunkiai pasiekiamas kitų objektų.
<?php
class Example
{
// Hold an instance of the class
private static $instance;
// A private constructor; prevents direct creation of object
private function __construct()
{
echo 'I am constructed';
}
// The singleton method
public static function singleton()
{
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c;
}
return self::$instance;
}
// Example method
public function bark()
{
echo 'Woof!';
}
// Prevent users to clone the instance
public function __clone()
{
trigger_error('Clone is not allowed.', E_USER_ERROR);
}
}
?>
<?php // This would fail because the constructor is private $test = new Example; // This will always retrieve a single instance of the class $test = Example::singleton(); $test->bark(); // This will issue an E_USER_ERROR. $test_clone = clone $test; ?>


