私はこのコードを勉強しています:それは http://www.w3style.co.uk/a-lightweight-and-flexible-front-controller-for-php-5クラスをインスタンス化する通常のコンストラクタではなく、 `public static function createInstance()`をいつ使うべきですか?
著者は、クラスをインスタンス化するstatic
機能を使用しています。私は基本的に初心者で、これは見たことがありませんでした。通常のコンストラクタではなくstatic
インスタンシエータを使用するのはなぜですか?
index.phpの
<?php
define("PAGE_DIR", dirname(__FILE__) . "/pages");
require_once "FrontController.php";
FrontController::createInstance()->dispatch();
FrontController.php
<?php
class FrontController {
public static function createInstance() {
if (!defined("PAGE_DIR")) {
exit("Critical error: Cannot proceed without PAGE_DIR.");
}
$instance = new self();
return $instance;
}
public function dispatch() {....}
これはシングルトンパターンを実装するために行われました。このようなスタティッククリエータを使用する他の理由はありませんか? – JDelage
createInstance()はpublicであり、privateではないので保護されていないので、これは実際にはシングルトンパターンではありません。このメソッドはコンストラクタでもありません。 – vladv
@JDelage、@vladv:申し訳ありませんが、私はそれを誤解しました。私は答えを決めた。 – jwueller