• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

小弟我的oop错在哪里?是静态变量的有关问题吗

php 搞代码 3年前 (2022-01-24) 28次浏览 已收录 0个评论

我的oop错在哪里?是静态变量的问题吗?

class db{<br />	public $conn;<br />    private static $h = "localhost";<br />    private static $u = "root";<br />    private static $p = "123123";<br />    private static $d = "air";<br />	function __construct(){<br />		$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);<br />		$this->conn->query('SET NAMES UTF8');<br />		//mysqli_query($this->conn,'SET NAMES UTF8');<br />	}<br />    public function getOne($sql,$resultType=MYSQL_ASSOC){//只取一条<br />    	$q=$this->conn->query($sql);<br />    	$rt=$q->fetch_array($resultType);<br />    	return $rt;<br />    }<br />}<br />//下面是一个继承类,就是上面的那个db我写好了后。有只要引用数据库(只取一条的,取多条我未写出)便来继承。这样写不好吗?谢谢<br />	class airVia extends db{<br />		public function doSql(){<br />			$sql='select * from xls1 where id=1';//实际中的语句复杂,只是测试<br />			$r=$this->getOne($sql);//db::getone($sql);不行<br />			return $r; <br />		}<br />	}//airVia<br />//使用此类<br />$wc=new airVia($v);echo $wc->doSql();<br />

错误信息如下:
Fatal error: Call to a member function query() on a non-object in D:\xampp\htdocs\chaxun\class\db.class.php on line 67
请问:
我的思路对吗?谢谢
一、写一个DB类,来连接数据库,以库要操作数据库时,可以来继承;
二,上述语句为何报错,看样子是那个$this->conn换成静态变量也不行。
——解决方案·本2文来源gaodai$ma#com搞$代*码网2搞gaodaima代码——————–
应该是conn对象没有生成成功,检查一下参数啥的,打印输出conn对象看看是啥
——解决方案——————–
Fatal error: Call to a member function query() on a non-object
$this->conn=mysqli_connect(self::$h,self::$u,self::$p,self::$d);
没有实例化成功

但你的代码并没有问题,可以正常通过测试(当然是改了用户名、口令、库名和表名)
错误可能产生于其他地方,都 on line 67 了,你才贴出多少?

既然是封装,就应该把错误处理也封装进来。这样就不要到处去问为什么出错了
——解决方案——————–
你需要初始化父类的构造方法
——解决方案——————–
给子类airVia 添加一个构造函数

public function __construct(){<br />parent::__construct();<br />}

——解决方案——————–
需要重新构造一下。

引用:

给子类airVia 添加一个构造函数
PHP code?123public function __construct(){parent::__construct();}


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:小弟我的oop错在哪里?是静态变量的有关问题吗
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址