PHP报错Fatal error: Access to undeclared static property以及Fatal error: Using $this when not in object

本文通过分析一个PHP编程中遇到的错误——在静态方法中尝试使用未声明的静态属性以及使用$this——探讨了静态方法的限制。作者详细描述了错误的起因、解决过程,总结了三个关键知识点:不应在静态方法中使用$this,静态方法不能调用非静态成员,以及self关键字的正确使用。最后,作者反思基础学习的重要性。
摘要由CSDN通过智能技术生成

起因

          封装数据库类的时候,写了一个静态方法querySql来执行一条sql语句,代码如下

	/**
	 * query 执行一条sql语句
	 * @param  string  $sql    sql语句
	 * @param  boolean $single 是否查询单条 默认是
	 * @return array           执行结果
	 */
	public static function querySql($sql = "",$single = true)
	{
		$stmt = $this->pdo->query($sql);

		if($single==true)
		{
			$data = $stmt->fetch(PDO::FETCH_ASSOC);
		}else{
			while($row = $stmt->fetch(PDO::FETCH_ASSOC))
			{
				$data[] = $row;
			}
		}

		return $data;
	}

经过

          $pdo是保存的pdo对象,定义为private $pdo,我想在这个方法里使用pdo的query方法,报错了,信息如下

Fatal error: Using $this when not in object context in D:\phpbox\myphp_www\PHPTutorial\WWW\public\DB.php on line 31

          查了资料发现在静态方法里不能使用$this,我改成如下


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值