Object Oriented WP plugin structure

When searching the web for WordPress plugin tutorials and introductions the vast majority utilizes procedural programming. However having recently discovered Object Oriented programming in PHP 5 i decided to take another approach to both plugins and themes.

When encapsulating plugins or parts of your themes in classes, you create a container for variable, constant and function names thus avoiding name clashes with the core or with other plugins. You can also encapsulate your class in a statement checking if the class already exists to ensure that in the rare case of a name collision your plugin will not initialize and crash the WordPress installation.

Here is a simple example

< ?php
// Plugin Name: Text Barking Dog

if (!class_exists('OurWpPluginDog')) {
    class OurWpPluginDog {
        function __construct() {
            $this->text = "wuff wuff";
        function bark() {
            echo '';
    $dog = new OurWpPluginDog;
    add_action('wp_footer', array(&$dog, 'bark'));

This plugin will insert "wuff wuff" as an html comment at the hook wp_footer. The __construct function runs when the class is constructed you can also place your actions and filters here, if you do you simply reference array(&$this ... instead.

Object oriented programming encourages DRY - it simply makes it more convenient to reuse your code. As your plugin grows you will also find it easier to get an overview of the code.