Je suis étudiant ce code: http://www.w3style.co.uk/a-lightweight-and-flexible-front-controller-for-php-5Quand utiliser `public static function createInstance()` plutôt qu'un constructeur habituel pour instancier une classe?
L'auteur y utilise une fonction static
pour instancier une classe. Je suis fondamentalement un débutant et je n'avais jamais vu ça. Pourquoi utiliser un instantiateur static
plutôt que le constructeur habituel?
Voici le code:
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() {....}
Donc, cela a été fait pour mettre en œuvre un modèle de singleton - il n'y a pas d'autre raison d'utiliser un tel créateur statique? – JDelage
createInstance() est publique, non protégée et non privée, donc ce n'est pas vraiment un pattern Singleton. La méthode n'est pas le constructeur aussi. – vladv
@JDelage, @vladv: Désolé, je l'ai mal interprété. J'ai corrigé ma réponse. – jwueller