I am reading some PHP code that I could not understand:
class foo {
function select($p1, $dbh=null) {
if ( is_null($dbh) )
$dbh = $this->dbh ;
return;
}
function get() {
return $this->dbh;
}
}
I can't find $this->dbh ($dbh)
declaration from the class. My questions are:
What is the value of
$this->dbh
?Is it a local variable for function
select()
?Does
$this
belongclass foo
's data member? Why is there no declaration for$dbh
in this class?
$this->dbh
is.$dbh
is a property of the current object.$this
is use to access to the members of the current object.$this->dbh
can be used in any function inside the class.PHP is not strict about requiring class property declarations.
E_STRICT
is enabled.NULL
PHP is not strict for declaration. $this->dbh is a class member. I did the following code to understand the concept:
It is same as:
PHP doesn't force you to declare you class properties but will create them for you when first accessed. Whether this is good or bad, be that as it may, welcome to PHP.
Another thing to check is that you don't have any inheritance happening. Was your
$dbh
property defined in a parent class? There isn't anything in the simple code you posted but I can imagine that you simplified a bit for public consumption. :-)It will have the default value, if assigned else "null"
It is the property of foo class, not the local variable, so it will be available to all the methods of the foo class
Yes it does belong to the foo's data member, you don't see any declaration because, PHP is not strict about requiring class property declarations.