PHP $this 变量

2022-08-30 16:36:35

我正在阅读一些我无法理解的PHP代码:

class foo {
  function select($p1, $dbh=null) {
    if ( is_null($dbh) )
        $dbh = $this->dbh ; 
    return; 
  }

  function get() {
    return $this->dbh; 
  }
}

我找不到来自类的声明。我的问题是:$this->dbh ($dbh)

  • 的价值是什么?$this->dbh

  • 它是函数的局部变量吗?select()

  • 是否属于 的数据成员?为什么在此类中没有 的声明?$thisclass foo$dbh


答案 1

PHP的声明并不严格。$this->dbh是类成员。我做了以下代码来理解这个概念:

class foo {

 function foo(){
     $this->dbh = "initial value"; 
 }

 function select($p1, $dbh=null) {
    if ( is_null($dbh) )
        $dbh = $this->dbh ; 
    return; 
 }

 function get() {
     return $this->dbh; 
 }

}

它与:

class foo {
  var $dbh = "initial value"; 

  function select($p1, $dbh=null) {
    if ( is_null($dbh) )
       $dbh = $this->dbh ; 
    return; 
  }

  function get() {
     return $this->dbh; 
  }

}

答案 2

PHP 对要求类属性声明并不严格。

  • 分配后,将以静默方式创建属性。
  • 不存在的属性读取将生成一个通知(如果已启用)。E_STRICT
  • 任何未定义属性的默认值为NULL

推荐