class Plugin{
    static public function Construct(){
        static $single_call = false; // Enable calling this just once
        if($single_call) return; // Skip double hooking
        add_filter('the_content', array(__CLASS__, 'TheContent'));
        $single_call = true; // Block future calls
    }
    /**
     * @internal
     */
    static private function ContentModifier($content){
        return $content;
    }
    // All actions/filters must be public, internal methods can stay private
    static public function TheContent($content){
        return self::ContentModifier($content);
    }
}
Plugin::Construct(); // Single Call


Create static classes for plugins. Actions/Filters must be public.

And, as you use PHP 5.3+, consider Closures where you need single-use hard to remove actions/filters.

add_filter('the_content', function($content){
    return $content;
});


I come from C++, welcome to PHP!

Applying OO patterns and principles to plugin development
I'm having a hard time wrapping my head around how the actual contracts are structured at an exchange. Here are my questions:


If an exchange facilitates the trading of futures contracts and nobody intends to take delivery of the product, nor do they own it so they can deliver it, then how are the contracts issued?  
Is there a fixed number of contracts that are created and traded, or is there an "unlimited" number of contracts?  
If none of the traders intend to take delivery nor do they want to deliver, then where do the sellers get the contracts to sell? How does that process work?  


It's easy to figure out how it works with trading stocks or currencies: the stocks are issued by the company and granted to the owners, then they sell the stocks. Currencies are much the same: you have accumulated some cash and you want to trade it. But in both of those cases the trader either owns something or buys it from somebody else. How do traders of futures contracts obtain them?  

P.S. I'm not sure if this is the correct place to get clarification on this subject, but if there is a better stackexchange sub-domain for it, then I'll go there.
