Every class definition begins with the keyword class, followed by a class
name, which can be any name that isn't a reserverd word in PHP. Followed
by A pair of curly braces, of which contains the definition of the classes
members and methods. Within each method, except for static methods, a psudo variable
$this is available. $this is a
reference to the same instance that called the method.
Example 18-1. Simple Class definition
<?php class SimpleClass { /* member declaration */ public $var = 'a default value';
/* method declaration */ public function displayVar() { echo $this->var; /* Echo my own $var value */ } } ?>
|
|
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 18-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 18-3. Object Assignment
<?php $assigned = $instance; $reference =& $instance;
$instance->var = '$assigned will have this value';
$instance = null; /* $instance and $reference become 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
extend 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 overloaded, 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 overloaded
method or members by referencing them with parent::
Example 18-4. Simple Class Inherintance
<?php class ExtendClass extends SimpleClass {
/* Redefine the parent method */ function displayVar() { echo "Extending class\n"; parent::displayVar(); } }
$extended = new ExtendClass(); $extended->displayVar(); ?>
|
The above example will output: Extending class
a default value |
|