派生类数据库 单利模式
-
//要解决的问题 在一个方法中多次调用类
- //多次调用父类相同的类
- class Pdoo {
- public function __construct(){}
- //这是个数据库的类
- function select($name) {
- echo "正宗" . $name;
- }
- }
- class Conn {
- static $db;
- private function __construct() {
-
- }
-
- private function __clone() {
-
- }
- //返回的的是数据库的连接 而非Base类
- public static function getInstance() {
- if (self::$db == null) {
- self::$db = new Pdoo ();
- }
- return self::$db;
- }
-
- //这个方法是无效的
- function select($name) {
- echo $name;
- }
-
- }
- class Db {
- static $db;
- static $instanceInternalCache;
- private function __construct() {
- //初始话 跟连接数据库没有任何关系的
- }
-
- private function __clone() {
- }
- //不能在这里实例化
- public static function getDb() {
-
- }
- //这里解决 在同一个方法中多次调用A不会被多次实例化
- //解决不了多个派生类被实例化 也就是有多少派生类 数据库就要连接多少次
- public static function getInstance($model) {
- if (self::$instanceInternalCache [$model] == NULL) {
- self::$instanceInternalCache [$model] = new $model ();
- }
-
- return self::$instanceInternalCache [$model];
- }
-
- function select($name) {
- Conn::getInstance ()->select ( $name );
- }
- }
-
- class A extends Db {
-
- function s($name) {
- $this->select($name);
- }
-
- public static function instance() {
- return parent::getInstance ( __CLASS__ );
- }
- }
-
- class B extends Db {
-
- function s($name) {
- $this->select($name);
- }
- public static function instance() {
- return parent::getInstance ( __CLASS__ );
- }
- }
- class Main {
-
- public function t() {
- A::instance ()->select ( "1" );
- A::instance ()->select ( "11" );
-
- B::instance ()->select ( "2" );
-
- }
- }
- $t = new Main ();
- $t->t ();
复制代码
|
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
-
2024-10-22 09:46:29
-
2024-10-13 13:53:41
-
2024-10-12 12:15:51
-
2024-10-11 22:47:31
-
2024-10-11 19:36:51
-
2024-10-11 15:50:41
-
2024-10-11 15:07:41
-
2024-10-11 14:21:21
-
2024-10-11 12:59:11
-
2024-10-11 12:17:31