• No results found

PHP Object Oriented Classes and objects

N/A
N/A
Protected

Academic year: 2021

Share "PHP Object Oriented Classes and objects"

Copied!
9
0
0

Loading.... (view fulltext now)

Full text

(1)

Department of Software and Computing Systems

PHP Object Oriented

Cl

d bj

t

Classes and objects

Sergio Luján Mora Jaume Aragonés Ferrero

(2)

Contents

• Introduction

• Class definition

• Object definition

• Constructor and destructor

• Inheritance

• Visibility

• Abstract, Final, static

M

OO f

t

• More OO features

Web development II

Introduction

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

• PHP offers principal features of OO Paradigm

to the programmer:

– Encapsulation, – Simple inheritance,

– Constructor and destructor methods – Member privacity (visibility)

– Interfaces – Overloading – Abstraction

(3)

Defining classes

• How to declare a class:

class myClass {

public $attribute1, $attribute2, …; function __Construct($arg1, $arg2, …) {…} function Method1(…) {…}

function Method2(…) {…} ...

}

• Class attributes must be declared explicitly

• Class attributes must be declared explicitly

depending on its visibility.

– It is the unique case where an identifier is due to declare. – It is possible to use ‘var’ in order to maintain compatibility

with PHP4.

• A class only can have one constructor

Web development II

Defining objects

• Creating an object

$myObject = new myClass(…); $myObject new myClass(…);

• How to access to class members, operator arrow: -> (hyphen, right angle bracket)

– Outside the class: $myObject->attribute/method

– Inside the class: $this->attribute/method

• Scope resolution operator ::

– allows access to static, constant, and overridden members th d f l

or methods of a class.

– Self::allows to access to own static members and methods.

– parent::allows to access to superclass static members and methods.

(4)

Constructor & destructor

• Class Constructor and Destructor have its own name: Constructor: construct()

– Constructor: __construct()

– Destructor: __destruct()

• In previous PHP 5 versions:

– The constructor was a member method with the same name of its class.

– There were not class destructors. • Destructor will be invoked if:

– All references of an object disappear. – An object is explicitly destroyed.

Web development II

Example

<?

class Person {

var $name, $surname;

function __Construct($n, $a) { $this->name = $n; $this->surname = $a; } } }

$p1 = new Person(‘Homer', ‘Simpson'); $p2 = new Person(‘Peter', ‘Griffin'); echo "$p1->surname, $p1->name<br />";

(5)

Inheritance

• Simple inheritance can be realised by means of extends

keyword.

• Simple inheritance means a class can only inherit from just one superclass (or base class)

one superclass (or base class)

• ATTENTION: base class constructor is not called automatically from the subclass constructor. You must invoke it explicitly.

• Inheritance systeax:

class SubClass extends BaseClass {

... }

• It is possible to overwrite all base class methods, whenever they are not ‘final’.

• We can access to base class methods or attributes using:

parent::

Web development II

Constructor & destructor: inheritance

• Child classes do not call base class

constructor or destructor automatically

Æ

They have to be invoked explicitly:

– parent::__construct()

– parent::__destruct()

(6)

Inheritance Example

<? ...

class Client extends Person class Client extends Person {

var $code;

function __Construct($n, $a, $c) { parent::__Construct($n, $a); $this->code = $c; } } }

$c1 = new Client(‘Bender', ‘Rodriguez', 123); echo "$c1->surmane, $c1->name: $c1->code<br />"; ?>

Web development II

One more example

<?php

class myClass {

function __construct() {

print “Parent class Constructor\n"; }

}

class childClass extends myClass { function __construct() {

parent::__construct();

print “Child class Constructor\n"; print “Child class Constructor\n"; }

}

$oParent = new myClass(); $oChild = new childClass();

(7)

Visibility

• The visibility of a property or method can be defined by prefixing the declaration with the keywords: public protected prefixing the declaration with the keywords: public, protected or private.

• There are three levels of visibility:

– public: Public declared items can be accessed everywhere

.

protected: Protected limits access to inherited and parent classes (and to the class that defines the item).

private: Private limits visibility only to the class that defines the

– private: Private limits visibility only to the class that defines the item.

• Class attributes have to be declared with their visibility. – If they are declared with ‘var’ they will be ‘public’.

• By default, methods declared without visibility will be ‘public’.

Web development II

abstract classes and methods

• abstract:

– It is not allowed to create an instance of a class that has been defined as abstract

– Any class that contains at least one abstract method must also be abstract.

– Methods defined as abstract simply declare the method's signature they cannot define the implementation.

When inheriting from an abstract class all methods – When inheriting from an abstract class, all methods

marked abstract in the parent's class declaration must be defined by the child

(8)

Final and Static

• final:

– A class defined final cannot be extended.

– Prevents child classes from overriding a method by prefixing the definition with final.

• Static:

– Todo método estático puede ser invocado sin

t i t i bj t d l

tener que instanciar un objeto de esa clase.

– $This

no está accesible desde un miembro estático.

Web development II

More OO features

• Interface: allows to specify like a class templates. • Method overloading: provides means to dynamically • Method overloading: provides means to dynamically

"create" members and methods

• Magic methods: You cannot have functions with these names in any of your classes unless you want the magic functionality associated with them.

• Object cloning: Creating a copy of an object with the same data and status.

– Cloneand __clone: spetial methods. • Object comparison operator: ===

(9)

Exercises

• Define a class ‘cAuthor’ with three attributes:

name surname and country

name, surname and country.

• Define a class ‘cBook’ with three attributes:

title, number of pages and and object

‘cAuthor’.

– Create all necessary methods: constructor, destructor, gets and sets.

– Program each class in a single file.

• Code a new PHP script including previous

files and declare an object ‘cBook’ with data

and finally print its attribute values.

References

Related documents

Classes and Objects Class Declaration Class Members Data Constructors Data Constructors Destructors Member Functions.. Class Member Visibility

class DayOfYear { public: void input(); void output(); private: int month; int day; };. ‹ Data

Menurut Aziz (2005:23) Constructor adalah method yang akan dipanggil pertama kali setiap pembuatan sebuah object dari suatu class.. Menurut Aziz (2005:23) Destructor

This applies to both single and multiple dispatch method calls In single inheritance the job is easy: if the class of the current object has a method defined, use it; else recurse

protected: only member functions of the same class or of derived classes can access it: other classes or global functions can’t public: every function can access it. class MyClass

A class declaration may specify one or more index variables that constrain its fields and methods, and a method may be parametrized by one or more index variables that can be used

• Interface concept: Set of methods and fields that the class makes public for other objects

• Suppose that the Object class contains the compareTo method, as defined in the Comparable interface: the new max method can be used to compare a list of any objects... The