nur-sery/nur_src/v/bs3/fox.php

52 lines
1.3 KiB
PHP

<?php
namespace nur\v\bs3;
use nur\str;
use nur\v\bs3\fo\Form;
use nur\v\bs3\fo\FormManager;
class fox {
const MANAGER_CLASS = FormManager::class;
protected static $manager_class;
/**
* spécifier la classe à utiliser pour instancier le gestionnaire de
* formulaires
*
* cette méthode *doit* être appelée avant d'appeler la méthode
* {@link manager()}
*/
static final function set_manager_class(string $manager_class) {
self::$manager_class = $manager_class;
}
/** @var FormManager */
protected static $manager;
static final function set_manager(FormManager $manager) {
self::$manager = $manager;
}
/** obtenir l'instance globale de gestionnaire de formulaire */
static final function manager(): FormManager {
if (self::$manager === null) {
$manager_class = self::$manager_class;
if ($manager_class === null) $manager_class = static::MANAGER_CLASS;
self::$manager = new $manager_class();
}
return self::$manager;
}
static final function __callStatic($name, $args) {
$name = str::us2camel($name);
return call_user_func_array([self::manager(), $name], $args);
}
#############################################################################
static function get(?string $type=null, ?array $params=null): Form {
return self::manager()->get($type, $params);
}
}