파생 클래스 데이터베이스 단순 관심 모드
풀어 주다: 2016-07-25 08:47:30
派生类数据库 单利模式
- //要解决的问题 在一个方法中多次调用类
- //多次调用父类相同的类
- 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