En PHP, le gestionnaire de connexions en tant que singleton est un modèle de conception courant. En tant qu'éditeur PHP Yuzu, nous avons mené une étude approfondie des principes et des applications de ce design pattern. La fonction principale du gestionnaire de connexions est de gérer de manière centralisée les connexions de base de données, de garantir qu'il n'y a qu'une seule instance de connexion de base de données dans l'application, d'éviter la surcharge liée à la création répétée de connexions et de contrôler efficacement le cycle de vie de la connexion. Ce modèle de conception est très pratique en matière de développement et peut améliorer les performances et la maintenabilité du programme. Dans cet article, nous présenterons en détail comment le gestionnaire de connexions est implémenté en tant que singleton et ses scénarios d'application dans des projets réels.
Supposons que je crée un objet pour gérer la connexion en tant que signleton, par exemple :
public class DatabaseConnection { private static Connection con = null; static { String url = "jdbc:`\[`mysql:/`\](mysql://)`/localhost:3306/org";` String user = "root"; String pass = "root"; try { Class.forName("com.mysql.jdbc.Driver"); con = DriverManager.getConnection(url, user, pass); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } } public static Connection getConnection() { return con; }
}
Ai-je bien compris, avec cette approche, je ne crée qu'une seule instance de connexion et je l'utilise dans toute l'application. J'ai juste besoin de fermer la connexion avant de quitter l'application ? Je pose cette question parce qu'on m'a dit dans le didacticiel que la meilleure option est d'utiliser try-with-resources pour créer la connexion. Mais en utilisant try-with-resources ou DatabaseConnection.getConnection().close
, je fermerai la connexion et je ne pourrai pas la restaurer plus tard dans l'application singleton. Pouvez-vous me l'expliquer ?
J'ai parcouru Stack Overflow et Google mais je n'ai pas trouvé la réponse
Vous établissez la connexion à l'intérieur d'un bloc statique et le bloc statique est chargé pendant le chargement de la classe. Par conséquent, pour fermer la connexion, vous devez fermer l’application.
Si vous souhaitez créer un singleton, créez une classe et rendez le constructeur privé et à l'intérieur de ce constructeur, définissez votre connexion à la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!