php 派生类 数据库连接 单例模式 xhprof实测 高效连接

<?php
//要解决的问题 在一个方法中多次调用类 
//多次调用父类相同的类
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 ();

php 派生类 数据库连接 单例模式 xhprof实测 高效连接

时间: 2025-01-08 07:59:02

php 派生类 数据库连接 单例模式 xhprof实测 高效连接的相关文章

继承与派生类Circle and Rectangle和The Person, Student, Employee, Faculty and Staff Class

C++为了更加的灵活,更加是程序员自由随性的编写程序,定义了类类型.我们在其中自定义类型,在其中封装函数,甚至在其中重载运算符来改变其原有的属性.类的继承又将类应用的更加开拓.我们用类来使用原有的类,充分体现了C++的开放与包容 派生类(或子类,继承类)拥有基类(或父类,超类)的所有属性及行为,又定义了自己的属性及行为,派生类能够访问基类,但基类就没有访问派生类的权限.二者的关系并不可逆.基类是派生类的抽象,派生类是基类的具体化.从一个基类派生出来的叫做单继承,从多个基类派生出来的叫做多继承.由

关于HslCommunication组件的双模式客户端的说明,此说明适用于所有的派生类客户端,包括三菱,西门子,欧姆龙,modbustcp,机器人,simplifyNet客户端等等

前言 本文主要是答疑文章,针对广大网友非常频繁的提问而总结的问题 nuget地址:https://www.nuget.org/packages/HslCommunication/            github地址:https://github.com/dathlin/HslCommunication                                 如果喜欢可以star或是fork,还可以打赏支持. 在Visual Studio 中的NuGet管理器中可以下载安装,也可以直接

多继承(虚继承)派生类对象内存结构

在这里谈一下虚继承.前面写过派生类对象的内存结构,都是基于VS2010编译器的,不同的编译器对于继承的处理不同,但本质都是一样的. 虚继承是解决共享基类问题的.例如在菱形继承中 如果不使用虚继承,基类A在D中会有两个,这不仅浪费内存,还会造成歧义.使用虚继承就可以解决基类共享的问题. 要想在派生类中共享基类(例如在D对象中只有一个A对象,这时候D对象中的B对象和C对象都可以查找到A,而不是在B对象和C对象中各含有一个A对象). 先看下面一个例子: #include<iostream> usin

从设计基类及其派生类看继承关系

继承能够定义可重用.扩展或修改父类行为的子类.但基类的静态构造函数.实例构造函数和析构函数不能被派生类继承. 在下面实例中,定义一个基类Publication用于表示任何类型的出版物以及派生至Publication的其他类型Book类,由此也可以扩展为定义其他类型如:Magazine.Journal.Newspaper和Article. 在设计基类Publication时我们必须考虑到如下关系: 1.要在基类中添加哪些成员 2.基类是否用作派生类模板的抽象基类 3.类层次结构的扩展空间大小,要开

派生类和基类的转换

指针引用分四种情况: 1.直接用基类指针引用基类对象 2.直接用派生指针引用派生对象 3.由基类指针引用派生类对象,由于派生类也是基类对象(包含关系),所以这种引用是安全的.但是只能引用基类成员,若试图通过基类指针引用那些只在派生类中才有的成员,编译器会报告语法错误.(解决该问题的答案是虚函数和多态性) 4.用派生类指针引用基类对象,这种方式会导致编译器报错.必须先把派生类指针强制转换成基类指针. 如果基类和派生类都定义了同名函数,通过对象指针调用成员函数时,到底调用哪里的函数由指针的原始类型决

C#派生类中使用基类protected成员的方法

我们知道C#中通过继承可以使一个具有公共数据和方法的基类被广泛应用从而减少代码量,这样派生类会具有基类中所有成员(除构造器等),我们理所当然可以通过派生类实例来使用基类的成员.那么当基类成员被protected修饰时,我们应该怎么在派生类中使用基类成员呢,下面将介绍使用方法. 首先我们贴一段错误的使用代码: 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Console.ReadLine(); 6 7 } 8 } 9 pub

【总结】C++基类与派生类的赋值兼容规则

在初步探索了C++继承的语言特性之后,总结下其赋值兼容规则: 1.子类对象可以赋值给父类对象(切割/切片) 在公有继承的前提下,子类是可以赋值给父类对象的,为什么是共有继承(public),因为公有继承会产生"is-a"的关系,这种关系会导致子类中有结构的嵌套这父类的信息,.所以子类可以给父类赋值,期间会发生类似降级的事情,使得赋值成功.若为私有继承,则会产生"has-a"的关系,这种关系是从属关系,基类中的数据仅仅是包含在派生类中,若赋值,则不会产生类似于降级的事

【C++学习之路】派生类的构造函数(二)

二.有内嵌对象的派生类 1.一般来说,我们会这样定义构造函数 student( int i, string nam, int pid, string pnam, int sid) : person( i, nam),parent(pid,pnam){ stuid = sid; } person是基类的构造函数,parent是该派生类内嵌的person子对象   2.具体例子 1 #include <iostream> 2 using namespace std; 3 class A 4 { 5

C++:基类与派生类对象之间的赋值兼容关系

4.5 基类与派生类对象之间的赋值兼容关系 在一定条件下,不同类型的数据之间可以进行类型转换,例如可以将整型数据赋给双精度型变量. 在赋值之前,先把整型数据转换为双精度型数据,然后再把它双精度型变量.这种不同类型之间的自动转换,称为赋值兼容.在基类和派生类对象之间也存在有赋值兼容关系,基类和派生类对象之间的赋值兼容规则是指在需要基类对象的任何地方,都可以使用公有派生类的对象来代替.因为,通过公有继承,除了构造函数和析构函数外,派生类保留了基类其他的所有的成员.那么,派生类就具有基类的全部功能,凡