Locale Page...  Global  |  Germany  |  UK  |  USA
Your privat CyberGadget - The finest Resources for Web-Designer, Web-Master and Web-Developer!
Quick Search
Advertisement
Partner & Friends
Developersdex
Tutorial Guide
Send News    Add URL / Entry    Tag it:digg it!Stumble It!YahooMyWeb!del.icio.us!Simpify!reddit!Netvouz!Ma.gnolia!FurlIt!Blogmarks!BlinkList!
PHP Manual by the PHP Documentation Group php.net

Patterns

Patterns are ways to describe best practices and good designs. They show a flexible solution to common programming problems.

Factory

The Factory pattern allows for the instantation of objects at runtime. It is called a Factory Pattern since it is responsible for "manufacturing" an object.

Example 19-23. Factory Method

<?php
class Example
{
    
// The factory method
    
function &factory($type)
    {
        if (include_once
'Drivers/' . $type . '.php') {
            
$classname = 'Driver_' . $type;
            return new
$classname;
        } else {
            
throw new Exception ('Driver not found');
        }
    }
}
?>

Defining this method in a class allows drivers to be loaded on the fly. If the Example class was a database abstraction class, loading a MySQL and SQLite driver could be done as follows:

<?php
// Load a MySQL Driver
$mysql = Example::factory('MySQL');

// Load a SQLite Driver
$sqlite = Example::factory('SQLite');
?>

Singleton

The Singleton pattern applies to situations in which there needs to be a single instance of a class. The most common example of this is a database connection. Implementing this pattern allows a programmer to make this single instance easily accessible by many other objects.

Example 19-24. Singleton Function

<?php
class Example
{
    
// Hold an instance of the class
    
static private $instance;
    
    
// A private constructor
    
private function __construct()
    {
        echo
'I am constructed';
    }

    
// The singleton method
    
static public function singleton()
    {
        if (!isset(
self::$instance)) {
            
$c = __CLASS__;
            
self::$instance = new $c;
        }

        return
self::$instance;
    }
    
    
// Example method
    
public function bark()
    {
        echo
'Woof!';
    }
}

?>

This allows a single instance of the Example class to be retrieved.

<?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();

?>

© 2001 - 2009 CYGAD.NET | All rights reserved. | Terms of Service | About | Time data: GMT +1! | Portal Release X2.6.1 Beta | RunTime: 0.9014
Optimized for Internet Explorer Internet Explorer 6.0+, Firefox Firefox 1.5+!