Je veux créer une classe statique en PHP et il se comporte comme il le fait en c#, donc
- Constructeur est appelé automatiquement lors du premier appel à la classe
- Aucune instanciation requise
Quelque chose de ce genre...
Je veux créer une classe statique en PHP et il se comporte comme il le fait en c#, donc
Quelque chose de ce genre...
vous pouvez avoir ceux de « statique »-comme des classes. mais je suppose, qu’il manque quelque chose de très important : en php vous n’avez pas un cycle d’app, alors vous n’obtiendrez un véritable statique (ou singleton) dans votre application toute...
Voir http://stackoverflow.com/questions/432192/singleton-in-php
En général, je préfère écrire des non-statiques des classes et de l'utilisation d'une usine de la classe à instancier unique ( sudo statique ) les instances de l'objet.
De cette façon, le constructeur et le destructeur de travail, comme la normale, et je peux créer d'autres non statique des cas, si je le souhaite ( par exemple une deuxième connexion DB )
J'en utilise tout le temps et est particulièrement utile pour la création de DB stocker les gestionnaires de session, que lorsque la page se termine le destructeur va pousser à la session de la base de données.
Un autre avantage est que vous pouvez ignorer l'ordre vous appelez les choses que tout va être installé sur demande.
class Factory {
static function &getDB ($construct_params = null)
{
static $instance;
if( ! is_object($instance) )
{
include_once("clsDB.php");
$instance = new clsDB($construct_params); // constructor will be called
}
return $instance;
}
}
La classe DB...
class clsDB {
$regular_public_variables = "whatever";
function __construct($construct_params) {...}
function __destruct() {...}
function getvar() { return $this->regular_public_variables; }
}
N'importe où vous voulez à utiliser, il suffit d'appeler...
$static_instance = &Factory::getDB($somekickoff);
Puis il suffit de traiter toutes les méthodes non statiques ( car ils le sont )
echo $static_instance->getvar();
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.