Q:

php ClassName::staticFunction()->publicFunction() What is this doing?

I'm reading up on php design patterns, and I saw this code:
<?php
require_once("DB.php");

class DatabaseConnection
{
  public static function get()
  {
    static $db = null;
    if ( $db == null )
      $db = new DatabaseConnection();
    return $db;
  }

  private $_handle = null;

  private function __construct()
  {
    $dsn = 'mysql://root:password@localhost/photos';
    $this->_handle =& DB::Connect( $dsn, array() );
  }

  public function handle()
  {
    return $this->_handle;
  }
}

print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
print( "Handle = ".DatabaseConnection::get()->handle()."\n" );
?>

I understand it all except the last two print statements. I've been messing around with it, but I don't understand the static function somehow calling a public non-static function. 
I've notice I can do:
DatabaseConnection::get()->get()->get()->handle();

but I can't so something like:
DatabaseConnection::get()->handle()->get();

I just don't understand what this is doing, other than calling the get function then calling the handle function. 

A:

This works because the static function returns a new object.  This type of construction is typically referred to as a Singleton, since it is attempting to enforce that only one instance of a DatabaseConnection is ever available.
Notice that the constructor is private, so you cannot explicitly call new DatabaseConnection() unless you are already inside the class.  Solutions utilizing a Singleton will have a property, initally null, that is then set to a non-null value upon object instantiation.  The 'getInstance' (or get in this case) method will only return a new object if the property is null.

