나는 PHP 디자인 패턴을 읽고있는 중이, 나는이 코드를 보았다 :PHP ClassName :: staticFunction() -> publicFunction()이 작업은 무엇입니까?
<?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:[email protected]/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()->handle()->get();
난 그냥이 무엇을하고 있는지 이해가 안 :
DatabaseConnection::get()->get()->get()->handle();
을하지만 난 그렇게 같은 것을 할 수 없습니다 get 함수를 호출 한 다음 handle 함수를 호출합니다.
나는 그것을 지금 본다. get() 함수는 객체를 반환하고 해당 객체는 handle이라는 함수와 get()이라는 함수를 가지고 있습니다. 그래서 저는 Database :: get() -> get() -> get() -> handle()을 할 수있었습니다. 나는 바보가된다. 나는 점 표기법을 그리워. – Dreadfulgravy