Private static method vs. static method
<p>I understand static means that an object doesn't need to be instantiated for that property/method to be available. I also understand how this applies to public properties and methods and public methods.  What I'm trying to understand is what static private function gains you.  For example:</p>

<pre><code>class Beer {
    static private $beertype = "IPA";

    private function getBeerType() {
            return self::$beertype;
    }

    static public function BeerInfo() {
            return self::getBeerType();
    }
}

print Beer::BeerInfo() . "\n";
</code></pre>

<p>The private method getBeerType() executes just fine without an instantiated object as long as it's being called from a static public method.  If a static public method has access to all private methods (static and non-static), what's the benefit of declaring a method static private?</p>

<p>Edit: with STRICT error reporting turned on, I do get the warning that I <em>should</em> make getBeerType() static, although it still let's me run the code.  And I did a little research and it seems like other languages (Java) will force you to declare a private method as static when called by a static public method.  Looks like PHP let's you get away with this.  Is there a way to force it to error and <em>not execute</em>?   </p>
