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 st...
Conceptually, what does a
function represent?
…give the function something (arguments), it does
something with them, and t...
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 ...
Class Definition
<?php
Define the name
class dog {
of the class.
public $name;
public function bark() {
echo ‘Woof!’;
}
}
...
Class Definition
<?php
class dog {
var $name
public $name;
public function bark() {
echo ‘Woof!’;
Define an object
}
attri...
Define
Class Definition an

object action
<?php
(function), the
class dog {
dog’s bark.
public $name;
public function bark...
Class Definition
<?php
class dog {
public $name;
public function bark() {
echo ‘Woof!’;
}
End the class
}
definition
?>
PH...
Class Defintion
Similar to defining a function..
The definition does not do anything by
itself. It is a blueprint, or desc...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
Class Usage
Use the name
<?php
variable of this
require(‘dog.class.php’);
instance in an
$puppy = new dog(); echo statemen...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
Class Usage
<?php
require(‘dog.class.php’);
$puppy = new dog();
$puppy->name = ‘Rover’;
echo “{$puppy->name} says ”;
$pupp...
One dollar and one only…
$puppy->name = ‘Rover’;
The most common mistake is to use more
than one dollar sign when accessin...
Using attributes within the class..
• If you need to use the class variables
within any class actions, use the special
var...
Constructor methods
• A constructor method is a function that is
automatically executed when the class is
first instantiat...
Constructor Example
<?php
class dog {
Constructor function
public $name;
public function __construct($nametext) {
$this->n...
Constructor Example
<?php
…
$puppy = new dog(‘Rover’);
…
?>
Constructor arguments
are passed during the
instantiation of t...
Class Scope
• Like functions, each instantiated object
has its own local scope.
e.g. if 2 different dog objects are
instan...
Inheritance
• The real power of using classes is the
property of inheritance – creating a
hierarchy of interlinked classes...
Inheritance
• The child classes ‘inherit’ all the methods
and variables of the parent class, and can
add extra ones of the...
Inheritance example
The American Kennel Club (AKC) recognizes three sizes of poodle - Standard,
Miniature, and Toy…

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

class...
Inheritance example
…
$puppy = new poodle(‘Oscar’);
$puppy->set_type(12); // 12 inches high!
echo “Poodle is called {$pupp...
…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 ...
Child Constructors?
• If the child class possesses a constructor
function, it is executed and any parent
constructor is ig...
Objects within Objects
• It is perfectly possible to include objects within another
object..
class dogtag {
public $words;...
Deleting objects
• So far our objects have not been
destroyed till the end of our scripts..
• Like variables, it is possib...
A copy, or not a copy..
• Entire objects can be passed as
arguments to functions, and can use all
methods/variables within...
Why Object Orientate?
Reason 1
Once you have your head round the concept of
objects, intuitively named object orientated c...
Why Object Orientate?
Reason 2
Existing code becomes easier to maintain.
e.g. If you want to extend the capability of a
pi...
Why Object Orientate?
Reason 3
New code becomes much quicker to write
once you have a suitable class library.
e.g. Need a ...
There is a lot more…
• We have really only touched the edge of
object orientated programming…
http://www.php.net/manual/en...
PHP4 vs. PHP5
• OOP purists will tell you that the object
support in PHP4 is sketchy. They are
right, in that a lot of fea...
Upcoming SlideShare
Loading in …5
×

SQL Devlopment for 10 ppt

649 views

Published on

Oracle

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
649
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Remind them about functions to start off with.. hopefully they all agree that they are useful.
  • Say we’ll talk more about the application of OBJECTS and object orientated programming later, for now we are going to learn in practice how to use the things..
  • Demonstrate with file classes1.php
  • Show example in code.
  • demonstrate…
  • SQL Devlopment for 10 ppt

    1. 1. PHP Classes and Object Orientation PHP Workshop 1
    2. 2. Reminder… a function • Reusable piece of code. • Has its own ‘local scope’. function my_func($arg1,$arg2) { << function statements >> } PHP Workshop 2
    3. 3. 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
    4. 4. What is a class? Conceptually, a class represents an object, with associated methods and variables PHP Workshop 4
    5. 5. 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
    6. 6. Class Definition <?php Define the name class dog { of the class. public $name; public function bark() { echo ‘Woof!’; } } ?> PHP Workshop 6
    7. 7. 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
    8. 8. Define Class Definition an object action <?php (function), the class dog { dog’s bark. public $name; public function bark() { function bark() { echo ‘Woof!’; echo ‘Woof!’; } } ?> PHP Workshop 8
    9. 9. Class Definition <?php class dog { public $name; public function bark() { echo ‘Woof!’; } End the class } definition ?> PHP Workshop 9
    10. 10. 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
    11. 11. Class Usage <?php require(‘dog.class.php’); $puppy = new dog(); $puppy->name = ‘Rover’; echo “{$puppy->name} says ”; $puppy->bark(); ?> PHP Workshop 11
    12. 12. 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
    13. 13. 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
    14. 14. 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 ‘Rover’. PHP Workshop 14
    15. 15. Class Usage Use the name <?php 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
    16. 16. 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
    17. 17. 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
    18. 18. 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
    19. 19. 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
    20. 20. 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
    21. 21. Constructor Example <?php class dog { Constructor function public $name; public function __construct($nametext) { $this->name = $nametext; } public function bark() { echo ‘Woof!’; } } ?> PHP Workshop 21
    22. 22. Constructor Example <?php … $puppy = new dog(‘Rover’); … ?> Constructor arguments are passed during the instantiation of the object. PHP Workshop 22
    23. 23. 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
    24. 24. Inheritance • The real power of using classes is the property of inheritance – creating a hierarchy of interlinked classes. dog parent children poodle PHP Workshop alsatian 24
    25. 25. 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
    26. 26. 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
    27. 27. Inheritance example The American Kennel Club (AKC) recognizes three sizes of poodle - Standard, Miniature, and Toy… class poodle extends dog { 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’; } } Note the use of the extends keyword to indicate that the poodle class is a child of the dog class… } PHP Workshop 27
    28. 28. 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
    29. 29. …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
    30. 30. 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
    31. 31. Objects within Objects • It is perfectly possible to include objects within another object.. class dogtag { public $words; } class dog { public $name; public $tag; } … $puppy = new dog; $puppy->name = “Rover"; $poppy->tag = new dogtag; $poppy->tag->words = “blah”; … public function bark() { echo "Woof!n"; } PHP Workshop 31
    32. 32. 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
    33. 33. 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
    34. 34. 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
    35. 35. 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
    36. 36. 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
    37. 37. 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
    38. 38. 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

    ×