There are two design patterns that are very easy to implements in PHP : Registry and Observer.
Code Igniter uses the Model-View-Controller pattern itself.
If you want to know more about the registry pattern I wrote a blog post about it a while ago: http://labs.rickypoo.net/2008/10/04/design-patterns-registry/
For the observer it’s quite simple actually.
Say for instance you want to build a validation class:
<?php
class validation {
protected $_validations = array();
public function register($validation)
{
$this->_validation = array_push($validation);
}
public function validate()
{
foreach($this->_validations as $validation)
{
$result = $validation->validate();
if($result == false)
return false;
}
return true;
}
}
class validation_is_number {
protected $_item;
public function __construct($item)
{
$this->_item = $item;
}
public function validate()
{
return is_int($this->_item);
}
}
?>
and the implementation:
<?php
$validation = new validation();
$validation->register(new validation_is_number($_POST[‘range_1’]);
$validation->register(new validation_is_number($_POST[‘range_2’]);
$result = $validation->validate();
?>
So basically, with the observer, you have a class, that implements usually an interface. Each class have one method in common which is used to be notified of something.
The hook system in code igniter is one example too of the observer pattern.
There are tons of common design pattern used in PHP but here is a quick introductory with IBM that might help you too : http://www.ibm.com/developerworks/library/os-php-designptrns/