Every class definition begins with the keyword class, followed by a class
name, which can be any name that isn't a reserved
word in PHP. Followed by a pair of curly braces, of
which contains the definition of the classes members and methods. A
pseudo-variable, $this is available when a method is
called from within an object context. $this is a
reference to the calling object (usually the object to which the method
belongs, but can be another object, if the method is called
statically from the context
of a secondary object). This is illustrated in the following example:
Example 19-1. Simple Class definition |
<?php
class SimpleClass
{
public $var = 'a default value';
public function displayVar() {
echo $this->var;
}
}
?>
|
|
To create an instance of an object, a new object must be created and
assigned to a variable. An object will always be assigned when
creating a new object unless the object has a
constructor defined that throws an
exception on error.
Example 19-2. Creating an instance |
<?php
$instance = new SimpleClass()
?>
|
|
When assigning an already created instance of an object to a new variable, the new variable
will access the same instance as the object that was assigned. This
behaviour is the same when passing instances to a function. A new instance
of an already created object can be made by
cloning it.
Example 19-3. Object Assignment |
<?php
$assigned = $instance;
$reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; var_dump($instance);
var_dump($reference);
var_dump($assigned);
?>
|
The above example will output: NULL
NULL
object(SimpleClass)#1 (1) {
["var"]=>
string(30) "$assigned will have this value"
} |
|
A class can inherit methods and members of another class by using the
extends keyword in the declaration. It is not possible to extend multiple
classes, a class can only inherit one base class.
The inherited methods and members can be overridden, unless the parent
class has defined a method as final,
by redeclaring them within the same name defined in the parent class.
It is possible to access the overrided method or members by
referencing them with parent::
Example 19-4. Simple Class Inherintance |
<?php
class ExtendClass extends SimpleClass
{
function displayVar()
{
echo "Extending class\n";
parent::displayVar();
}
}
$extended = new ExtendClass();
$extended->displayVar();
?>
|
The above example will output: Extending class
a default value |
|