派生类数据库 单利模式

WBOY
Freigeben: 2016-07-25 08:47:30
Original
1018 Leute haben es durchsucht
派生类数据库 单利模式
  1. //要解决的问题 在一个方法中多次调用类
  2. //多次调用父类相同的类
  3. class Pdoo {
  4. public function __construct(){}
  5. //这是个数据库的类
  6. function select($name) {
  7. echo "正宗" . $name;
  8. }
  9. }
  10. class Conn {
  11. static $db;
  12. private function __construct() {
  13. }
  14. private function __clone() {
  15. }
  16. //返回的的是数据库的连接 而非Base类
  17. public static function getInstance() {
  18. if (self::$db == null) {
  19. self::$db = new Pdoo ();
  20. }
  21. return self::$db;
  22. }
  23. //这个方法是无效的
  24. function select($name) {
  25. echo $name;
  26. }
  27. }
  28. class Db {
  29. static $db;
  30. static $instanceInternalCache;
  31. private function __construct() {
  32. //初始话 跟连接数据库没有任何关系的
  33. }
  34. private function __clone() {
  35. }
  36. //不能在这里实例化
  37. public static function getDb() {
  38. }
  39. //这里解决 在同一个方法中多次调用A不会被多次实例化
  40. //解决不了多个派生类被实例化 也就是有多少派生类 数据库就要连接多少次
  41. public static function getInstance($model) {
  42. if (self::$instanceInternalCache [$model] == NULL) {
  43. self::$instanceInternalCache [$model] = new $model ();
  44. }
  45. return self::$instanceInternalCache [$model];
  46. }
  47. function select($name) {
  48. Conn::getInstance ()->select ( $name );
  49. }
  50. }
  51. class A extends Db {
  52. function s($name) {
  53. $this->select($name);
  54. }
  55. public static function instance() {
  56. return parent::getInstance ( __CLASS__ );
  57. }
  58. }
  59. class B extends Db {
  60. function s($name) {
  61. $this->select($name);
  62. }
  63. public static function instance() {
  64. return parent::getInstance ( __CLASS__ );
  65. }
  66. }
  67. class Main {
  68. public function t() {
  69. A::instance ()->select ( "1" );
  70. A::instance ()->select ( "11" );
  71. B::instance ()->select ( "2" );
  72. }
  73. }
  74. $t = new Main ();
  75. $t->t ();
复制代码


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage