私はphpデザインパターンを読んでいて、このコードを見ました:
<?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" );
?>
最後の2つのprintステートメントを除いてすべて理解しています。私はそれをいじっていますが、どういうわけかパブリック非静的関数を呼び出す静的関数を理解していません。
私ができることに気づきました:
DatabaseConnection::get()->get()->get()->handle();
しかし、私はそのようなことはできません:
DatabaseConnection::get()->handle()->get();
get関数を呼び出してからhandle関数を呼び出す以外は、これが何をしているのか理解できません。