PHP框架一个方法调用的疑惑,贴出全部代码
本文介绍了PHP框架一个方法调用的疑惑,贴出全部代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
请问class mysql 调用的_getInstance方法 在哪里定义的?贴出了全部代码
<?php
namespace LaneSmartFW\DB;
/**
* 基础Model类,所有的Model文件均继承本类
* Created by lixuan-it@360.cn
* User: lane
* Date: 15/8/27
* Time: 下午6:35
* E-mail: lixuan868686@163.com
* WebSite: http://www.lanecn.com
*/
class Model implements DbInterface {
protected $dbConfigKey = null;
private $_db = null;
private function _getInstance(){
if(is_null($this->_db)){
if(is_null($this->dbConfigKey)){
$this->_db = Db::factor();
}else{
$this->_db = Db::factor($this->dbConfigKey);
}
}
return $this->_db;
}
public function close(){
$this->_getInstance()->close();
}
public function query($sql){
return $this->_getInstance()->query($sql);
}
public function fetchAssoc($resource){
return $this->_getInstance()->fetchAssoc($resource);
}
public function select($sql){
return $this->_getInstance()->select($sql);
}
}
<?php
namespace LaneSmartFW\DB;
/**
* Created by lixuan-it@360.cn
* User: lane
* Date: 15/8/27
* Time: 下午3:29
* E-mail: lixuan868686@163.com
* WebSite: http://www.lanecn.com
*/
class Mysql implements DbInterface{
private $_conn = null;
public function __construct($dbConfigKey='DB_CONFIG'){
if(is_null($this->_conn)){
$this->_connect($dbConfigKey);
}
}
private function _connect($dbConfigKey='DB_CONFIG'){
$dbConfig = getConfig($dbConfigKey);
$this->_conn = mysqli_connect($dbConfig['DB_HOST'], $dbConfig['DB_USERNAME'], $dbConfig['DB_PASSWORD'], $dbConfig['DB_NAME'], $dbConfig['DB_PORT']);
}
public function close(){
mysqli_close($this->_getInstance());
}
public function query($sql){
$result = mysqli_query($this->_conn, $sql);
return $result;
}
public function fetchAssoc($resource){
$rowList = array();
while($row = mysqli_fetch_assoc($resource)){
$rowList[] = $row;
}
return $rowList;
}
public function select($sql){
$result = $this->query($sql);
$rowList = $this->fetchAssoc($result);
return $rowList;
}
}
解决方案
提问者不够自信,采纳的答案更是把方向带偏了。
这就是个bug,没有人规定代码必须全对吧?
1-大家都知道有关闭数据库连接这个方法,但是实际开发中基本没有人会用,因为php自己会在进程结束时候关掉它。
2-从封装的方式也能看出来,这个叫lane的人通常通过model来操作mysql,而不是直接去调用mysql对象,而model中的close方法是对的,所以mysql中的close可能从来没有被调用过,因此这个错误一直没被发现。
3- @MaxFang 的评论很正确,从另一个侧面说明写代码的人水平并不高,所以这种错误就不难解释了。
综上,是bug,确实没定义。
这篇关于PHP框架一个方法调用的疑惑,贴出全部代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文