dongxun1142 2011-02-10 16:41
浏览 45
已采纳

PHP OOP:创建数据库类

I am making my first steps in the OOP world - please bear with me.
I know that having many ongoing mySQL connections open at the same time can be fatal for performance, so it should be a good idea to make a database class that takes this into account.

Is $this->session->write(...); going to result in a new mySQL connection being opened each time? Or is that up to the "persistent connection" feature in mySQL?

Here's the code:

abstract class database {
    function __construct() {
       //mysql_connect()
    }
}

class session extends database {
    function write () {
       // mysql_query(--.)
    }
}
  • 写回答

3条回答 默认 最新

  • duanmei1930 2011-02-10 17:03
    关注

    Is session handler some kind of specialized type of database? It is not, so don't use inheritance (a is a relationship). Session handler uses database so you should use composition (a has a relationship):

    class Session {
        protected $db;
    
        public function __construct(DB $db) {
            $this->db = $db;
        } 
    
        public function write() {
            $this->db->query(...);
        }
    }
    
    
    $db = new DB(...);
    $session = new Session($db);
    

    Also, don't use mysql_*() functions. Use much more powerful PDO.


    Returning to your question... mysql_connect() will be executed every time you create a new Database object. However in this case Session is an object of type Database so every time you write new Database() or new Session() the constructor is invoked, therefore mysql_connect() is invoked as well.

    PS. mysql_connect() function won't create a new connection if specified connection already exists. Check 4th argument of this function to learn more.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值