我有多个类使用静态方法.这些功能使用数据库连接
$MysqLi = new MysqLi(DB_SERVER,DB_USER,DB_PASS,DB_NAME);
其中常量DB_SERVER,DB_NAME是在全局可访问文件中定义的数据库变量.最近,我的网站开始慢了,在剖析了脚本后,我意识到创建对象($MysqLi)的调用导致了这个问题.
我的大部分班级都从MysqLi延伸出来
public function __construct($user_id) { parent::__construct(DB_SERVER,DB_NAME); $this->retrieve_user_details($user_id); $this->check_user_account_type(); }
这是一种方法:
创建一个可以从任何地方静态访问的单例类.
class DBConnector { private static $instance ; public function __construct($host,$user,$password,$db){ if (self::$instance){ exit("Instance on DBConnection already exists.") ; } } public static function getInstance(){ if (!self::$instance){ self::$instance = new DBConnector(a,b,c,d) ; } return $instance ; } }
一个例子是:
$MysqLi = DBConnector::getInstance() ;
$MysqLi = new MysqLi(a,d) ;
那么你可以将该对象传递给其他类(构造函数)
class Shop { private $MysqLi ; public function __construct(MysqLi $MysqLi){ $this->MysqLi = $MysqLi ; } } $show = new Shop($MysqLi) ;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。