Top Banner
PHP Classes and Object Orientation
35

Oops implemetation material

Aug 20, 2015

Download

Lifestyle

Deepak Solanki
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Oops implemetation material

PHP Classes and

Object Orientation

Page 2: Oops implemetation material

# Version DateRationale for change

Change Description

1 1.0 26-Feb-2008 Initial Version

2

Revision HIstory

Page 3: Oops implemetation material

Revision HIstory

Document Name Training Material

Document Code QMS-TEM-OT 08

Version 1.0

Date 26-Feb-2008

Created By Ms. Padmavathy

Reviewed BY SPG

Approved By Mr. Vijay

Page 4: Oops implemetation material

Agenda

• Introduction• Function• Class Definition• Class Usage• Constructor • Inheritance• PHP4 vs PHP5

Page 5: Oops implemetation material

Reminder… a function

• Reusable piece of code.

• Has its own ‘local scope’.

function my_func($arg1,$arg2) {

<< function statements >>

}

Page 6: Oops implemetation material

Conceptually, what does a function represent?

…give the function something (arguments), it does something with them, and then returns a result…

Action or Method

Page 7: Oops implemetation material

What is a class?

Conceptually, a class represents an object, with associated methods

and variables

Page 8: Oops implemetation material

Class Definition

<?phpclass 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.

Page 9: Oops implemetation material

Class Definition

<?phpclass dog {public $name;public function bark() {echo ‘Woof!’;

}} ?>

class dog {

Define the name of the class.

Page 10: Oops implemetation material

Class Definition

<?phpclass dog {public $name;public function bark() {echo ‘Woof!’;

}} ?>

public $name;

Define an object attribute (variable), the dog’s name.

Page 11: Oops implemetation material

Class Definition

<?phpclass dog {public $name;public function bark() {echo ‘Woof!’;

}} ?>

public function bark() {echo ‘Woof!’;

}

Define an object action (function), the dog’s bark.

Page 12: Oops implemetation material

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…

Page 13: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

Page 14: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

require(‘dog.class.php’);

Include the class definition

Page 15: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

$puppy = new dog();

Create a new instance of the class.

Page 16: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

$puppy->name = ‘Rover’;

Set the name variable of this instance to ‘Rover’.

Page 17: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

echo “{$puppy->name} says ”;

Use the name variable of this instance in an echo statement..

Page 18: Oops implemetation material

Class Usage

<?php

require(‘dog.class.php’);

$puppy = new dog();

$puppy->name = ‘Rover’;

echo “{$puppy->name} says ”;

$puppy->bark();

?>

$puppy->bark();

Use the dog object bark method.

Page 19: Oops implemetation material

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’;

Page 20: Oops implemetation material

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!’; }}

Page 21: Oops implemetation material

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!

Page 22: Oops implemetation material

Constructor Example

<?phpclass dog {

public $name;public function __construct($nametext) {

$this->name = $nametext;} public function bark() {

echo ‘Woof!’;}} ?>

Page 23: Oops implemetation material

Constructor Example

<?php

$puppy = new dog(‘Rover’);

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

Page 24: Oops implemetation material

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..

Page 25: Oops implemetation material

Inheritance

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

dog

poodle alsatian

parent

children

Page 26: Oops implemetation material

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…

Page 27: Oops implemetation material

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’;}

}}

Page 28: Oops implemetation material

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’;

} }}

class poodle extends dog {

Note the use of the extends keyword to indicate that the poodle class is a child of the dog class…

Page 29: Oops implemetation material

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();

Page 30: Oops implemetation material

…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!’;}…

}

Page 31: Oops implemetation material

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.

Page 32: Oops implemetation material

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.

Page 33: Oops implemetation material

There is a lot more…

• We have really only touched the edge of object orientated programming…

• But I don’t want to confuse you too much!

Page 34: Oops implemetation material

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…

Page 35: Oops implemetation material