0% found this document useful (0 votes)
45 views38 pages

PHP Classes and Object Orientation

PHP classes and object orientation allow developers to define reusable blocks of code called classes. A class represents an object and contains attributes (variables) and methods (functions) associated with that object. Classes can be defined using a class definition syntax that declares the class name, attributes, and methods. Objects are instantiated from classes and can access the class's attributes and methods. Classes can inherit attributes and methods from parent classes, allowing for hierarchical relationships between classes. Objects can also contain other objects as attributes.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
45 views38 pages

PHP Classes and Object Orientation

PHP classes and object orientation allow developers to define reusable blocks of code called classes. A class represents an object and contains attributes (variables) and methods (functions) associated with that object. Classes can be defined using a class definition syntax that declares the class name, attributes, and methods. Objects are instantiated from classes and can access the class's attributes and methods. Classes can inherit attributes and methods from parent classes, allowing for hierarchical relationships between classes. Objects can also contain other objects as attributes.
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 38

PHP Classes

and
Object Orientation

PHP Workshop 1
Reminder… a function
• Reusable piece of code.
• Has its own ‘local scope’.

function my_func($arg1,$arg2) {
<< function statements >>
}

PHP Workshop 2
Conceptually, what does a
function represent?
…give the function something (arguments), it does
something with them, and then returns a result…

Action or Method

PHP Workshop 3
What is a class?

Conceptually, a class represents an


object, with associated methods
and variables

PHP Workshop 4
Class Definition
<?php
class dog {
public $name;
public function bark() {
echo ‘Woof!’; An example class
definition for a dog.
}
The dog object has a
} single attribute, the
?> name, and can
perform the action of
barking.
PHP Workshop 5
Class Definition
<?php
Define the name
class dog { of the class.
public $name;
public function bark() {
echo ‘Woof!’;
}
}
?>

PHP Workshop 6
Class Definition
<?php
class dog {
var $name
public $name;
public function bark() {
echo ‘Woof!’;
} Define an object
} attribute (variable),
the dog’s name.
?>

PHP Workshop 7
Class Definition
Define an
<?php object action
class dog { (function), the
dog’s bark.
public $name;
public function
function bark() {
bark() {
echo‘Woof!’;
echo ‘Woof!’;
}
}
?>

PHP Workshop 8
Class Definition
<?php
class dog {
public $name;
public function bark() {
echo ‘Woof!’;
} End the class
} definition
?>

PHP Workshop 9
Class Defintion
Similar to defining a function..

The definition does not do anything by


itself. It is a blueprint, or description, of an
object. To do something, you need to use
the class…

PHP Workshop 10
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark();
?>

PHP Workshop 11
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark(); Include the class
?> definition

PHP Workshop 12
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark(); Create a new
?> instance of the
class.
PHP Workshop 13
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark(); Set the name
?> variable of this
instance to
PHP Workshop
‘Rover’. 14
Class Usage
<?php Use the name
variable of this
require(‘dog.class.php’);
instance in an
$puppy = new dog(); echo statement..
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark();
?>

PHP Workshop 15
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark();
Use the dog
?> object bark
method.
PHP Workshop 16
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$puppy->bark();
?>
[example file: classes1.php]

PHP Workshop 17
One dollar and one only…

$puppy->name = ‘Rover’;
The most common mistake is to use more
than one dollar sign when accessing
variables. The following means something
entirely different..
$puppy->$name = ‘Rover’;

PHP Workshop 18
Using attributes within the class..
• If you need to use the class variables
within any class actions, use the special
variable $this in the definition:
class dog {
public $name;
public function bark() {
echo $this->name.‘ says Woof!’;
}
}

PHP Workshop 19
Constructor methods
• A constructor method is a function that is
automatically executed when the class is
first instantiated.
• Create a constructor by including a
function within the class definition with the
__construct name.
• Remember.. if the constructor requires
arguments, they must be passed when it is
instantiated!

PHP Workshop 20
Constructor Example
<?php
class dog {
Constructor function
public $name;
public function __construct($nametext) {
$this->name = $nametext;
}
public function bark() {
echo ‘Woof!’;
}
}
?>

PHP Workshop 21
Constructor Example
<?php

$puppy = new dog(‘Rover’);

?> Constructor arguments
are passed during the
instantiation of the object.

PHP Workshop 22
Class Scope
• Like functions, each instantiated object
has its own local scope.
e.g. if 2 different dog objects are
instantiated, $puppy1 and $puppy2, the
two dog names $puppy1->name and
$puppy2->name are entirely
independent..

PHP Workshop 23
Inheritance
• The real power of using classes is the
property of inheritance – creating a
hierarchy of interlinked classes.

dog
parent
children
poodle alsatian

PHP Workshop 24
Inheritance
• The child classes ‘inherit’ all the methods
and variables of the parent class, and can
add extra ones of their own.
e.g. the child classes poodle inherits the
variable ‘name’ and method ‘bark’ from the
dog class, and can add extra ones…

PHP Workshop 25
Inheritance example
The American Kennel Club (AKC) recognizes three sizes of poodle -  Standard,
Miniature, and Toy…

class poodle extends dog {


public $type;
public function set_type($height) {
if ($height<10) {
$this->type = ‘Toy’;
} elseif ($height>15) {
$this->type = ‘Standard’;
} else {
$this->type = ‘Miniature’;
}
}
}
PHP Workshop 26
Inheritance example
The American Kennel Club (AKC) recognizes three sizes of poodle -  Standard,
Miniature, and Toy…

class poodle
class poodle extends extends
dog { dog {
public $type
public function set_type($height) {
if ($height<10) {
Note the use of the
$this->type = ‘Toy’; extends keyword to
} elseif ($height>15) {
$this->type = ‘Standard’; indicate that the
} else {
$this->type = ‘Miniature’;
poodle class is a child
} of the dog class…
}
}
PHP Workshop 27
Inheritance example


$puppy = new poodle(‘Oscar’);
$puppy->set_type(12); // 12 inches high!
echo “Poodle is called {$puppy->name}, ”;
echo “of type {$puppy->type}, saying “;
echo $puppy->bark();

PHP Workshop 28
…a poodle will always ‘Yip!’
• It is possible to over-ride a parent method with a new
method if it is given the same name in the child class..

class poodle extends dog {



public function bark() {
echo ‘Yip!’;
}

}

PHP Workshop 29
Child Constructors?
• If the child class possesses a constructor
function, it is executed and any parent
constructor is ignored.
• If the child class does not have a constructor,
the parent’s constructor is executed.
• If the child and parent does not have a
constructor, the grandparent constructor is
attempted…
• … etc.

PHP Workshop 30
Objects within Objects
• It is perfectly possible to include objects within another
object..

class dogtag {
$puppy = new dog;
    public $words;
} $puppy->name = “Rover";
$poppy->tag = new dogtag;
class dog { $poppy->tag->words = “blah”;
    public $name; …
    public $tag;

    public function bark() {


        echo "Woof!\n";
    }
}

PHP Workshop 31
Deleting objects
• So far our objects have not been
destroyed till the end of our scripts..
• Like variables, it is possible to explicitly
destroy an object using the unset()
function.

PHP Workshop 32
A copy, or not a copy..
• Entire objects can be passed as
arguments to functions, and can use all
methods/variables within the function.
• Remember however.. like functions the
object is COPIED when passed as an
argument unless you specify the argument
as a reference variable &$variable

PHP Workshop 33
Why Object Orientate?
Reason 1
Once you have your head round the concept of
objects, intuitively named object orientated code
becomes easy to understand.
e.g.
$order->display_basket();
$user->card[2]->pay($order);
$order->display_status();

PHP Workshop 34
Why Object Orientate?
Reason 2
Existing code becomes easier to maintain.

e.g. If you want to extend the capability of a


piece of code, you can merely edit the
class definitions…

PHP Workshop 35
Why Object Orientate?
Reason 3
New code becomes much quicker to write
once you have a suitable class library.
e.g. Need a new object..? Usually can
extend an existing object. A lot of high
quality code is distributed as classes (e.g.
http://pear.php.net).

PHP Workshop 36
There is a lot more…
• We have really only touched the edge of
object orientated programming…

http://www.php.net/manual/en/language.oop.php

• … but I don’t want to confuse you too


much!

PHP Workshop 37
PHP4 vs. PHP5
• OOP purists will tell you that the object
support in PHP4 is sketchy. They are right,
in that a lot of features are missing.
• PHP5 OOP system has had a big redesign
and is much better.
…but it is worth it to produce OOP
code in either PHP4 or PHP5…

PHP Workshop 38

You might also like