SlideShare a Scribd company logo
iFour ConsultancyOOP with PHP
web Engineering ||
winter 2017
wahidullah Mudaser
assignment.cs2017@gmail.com
 Lecture 09
 OOP in PHP
 Classes and objects
 Methods and properties
 Scope
 Inheritance
 Static methods and properties
 Constants
 Abstraction
 interfaces
OUTLINE
 The idea of Object Oriented Programming is to move the architecture of an
application closer to real world
 Classes are types of entities
 Objects are single units of a given class
 Example – Dog is a class, your dog Lassie is an object of class Dog
 Classes have methods and properties
 Classes and objects help to create well-structured application
Classes and objects
 Declaring of a class in PHP can be done anywhere in the code.
 Two special methods: constructor and destructor
 Executed when creating or destroying new object of this class
 Used to initialize or cleanup properties and etc.
Classes in PHP
class Dog {
… // declare methods and properties
}
Classes in PHP
 Class definition begins with the class keyword, followed by its name and
methods and properties list
 Objects of class (instances) are created with the keyword new
class A {
function foo () {
echo "foo here!";
}
}
$myFirstObject = new A();
$myFirstObject->foo(); // prints out "foo here!";
class name Method name and body
Create new object of class
A
Execute method of this
object
Constructors
 Each class can have only one constructor
 All parameters of the creating of the object are passed to the constructor
class A {
function __construct ($bar) {
echo $bar;
}
function foo () {
echo "foo here!";
}
}
$myFirstObject = new A('test');
// print 'test'
Properties
 Class can have unlimited number of properties
 The $this variable points to the current object – called execution
context
class A {
var $bar;
function __construct ($bar) {
$this->bar = $bar;
}
function myPrint () {
echo $this->bar;
}
}
$myFirstObject = new A('test');
$myFirstObject->myPrint();
More Properties
 Class can specify default value for a property
 Properties can be accessed from the outside world
class A {
var $bar = 'default value';
…
class A {
var $bar = 'default value';
…
}
$obj = new A;
echo $obj->bar;
$this
 Example of what $this is
 Can be used to access methods too
class A {
var $bar;
function __construct ($bar) {
$this->bar = $bar;
}
function myPrint () {
echo $this->bar;
}
}
$myFirstObject = new A('test');
$myFirstObject->myPrint(); // prints 'test'
$anotherObject = new A('foo');
$anotherObject ->myPrint(); // prints 'foo';
Destructors
 Each class can have only one destructor
 Must be public
 Destructors are automatically called when script is shutting down
class A {
function __construct ($name) {
$this->fp = fopen ($name, 'r');
}
function __destruct () {
fclose($this->fp);
}
}
$myFirstObject = new A('test');
Scope
 Each method and property has a scope
 It defines who can access it
 Three levels – public, protected, private
 Private can be access only by the object itself
 Protected can be accessed by descendant classes (see inheritance)
 Public can be accessed from the outside world
 Level is added before function keyword or instead of var
 var is old style (PHP 4) equivalent to public
 Constructors always need to be public
Scope Example
class A {
private $bar;
public function __construct ($bar) {
$this->bar = $bar;
}
public function myPrint () {
echo $this->bar;
}
}
$myFirstObject = new A('test');
$myFirstObject->myPrint(); // prints 'test'
// this will not work:
echo $myFirstObject->bar;
The $bar variable is private so only the
object can access it
The myPrint method is public, so
everyone can call it
Inheritance
 A class can inherit (extend) another class
 It inherits all its methods and properties
class A {
public $bar = 'test';
public function example () {
…
}
}
class B extends A {
…
}
$obj = new B();
echo $obj->bar; //prints 'test'
//calls the A-class function
$obj->example();
Protected Scope
 Method or property, declared as protected can be accessed in classes
that inherit it, but cannot be accessed from the outside world
class A {
protected $bar = 'test';
}
class B extends A {
public function foo () {
// this is allowed
$this->bar = 'I see it';
}
}
$obj = new B();
echo $obj->bar; //not allowed
Overriding
 When a class inherits another, it can declare methods that override parent class
methods
 Method names are the same
 Parameters may differ
class A {
public foo() { … }
}
class B extends A {
public foo() { … }
}
Overriding Example
class A {
public foo() {
echo 'called from A';
}
}
class B extends A {
public foo() {
echo 'called from B';
}
}
$obj1 = new A();
$obj2 = new B();
$obj1->foo(); // executes A's methods
$obj2->foo(); // executes B's methods
Accessing Parent Class
 As -> is used to access object's methods and properties, the :: (double colon) is
used to change scope
 Scope Resolution Operator
 parent:: can be used to access parent's class overridden methods
 Example: call parent's constructor in the child one
Accessing Parent Class
 Example of calling parent constructor
class A {
protected $variable;
public __construct() {
$this->variable = 'test';
}
}
class B extends A {
public __construct() {
parent::__construct();
echo $this->variable;
}
}
$obj1 = new B();
// prints 'test';
The static Keyword
 Defining method or property as 'static' makes them accessible without needing an
instantiation of a class
 Accessed with the double-colon (::) operator instead of the member (->) operator
 $this is not available in static methods
 Static properties and methods can also have scope defined – public, private or protected
The static Keyword
 Example of static method and property
 Class can access statics with the self keyword
 Outside world accesses statics with the class name
class A {
public static $myVariable;
public static function myPrint() {
echo self::$myVariable;
}
}
A::$myVariable = 'test';
A::myPrint();
Class Constants
 Constants in PHP usually are declared with the define function
 Constants can be defined in class
 Differ from normal variables – no need for $ symbol to declare and
access
 Declared with the const keyword
 Value must be supplied with the declaration
 Accessed with scope operator (::)
 Can be overridden by child classes
 Value must be constant expression, not a variable, class member, result
of operation or function call
Class Constants
 Example of a class constant
class A {
const myConstant = 'value';
public function showConstant() {
echo self::myConstant;
}
}
echo A::myConstant;
$obj = new A();
$obj->showConstant();
Abstraction
 Classes, defined as abstract, cannot have instances (cannot create object of
this class)
 Abstract class must have at least one abstract method
 Abstract methods do not have implementation (body) in the class
 Only signature
 The class must be inherited
 The child class must implement all abstract methods
 Cannot increase visibility
Abstraction Example
abstract class AbstractClass {
abstract protected function getValue();
abstract public function getValue2($prefix);
public function printOut () {
echo $this->getValue();
}
}
class Class1 extends AbstractClass {
protected function getValue (){
return "Class1";
}
public function getValue2($prefix) {
return $prefix."NAC1";
}
}
Abstraction Example (2)
// continue from previous slide
class Class2 extends AbstractClass {
protected function getValue (){
return "Class2";
}
public function getValue2($prefix) {
return $prefix."NAC2";
}
}
$class1 = new Class1();
$class1->printOut(); // "Class1";
echo $class1->getValue2('FOO'); // FOONAC1
$class2 = new Class2();
$class2->printOut(); // "Class2";
echo $class2->getValue2('FOO'); //FOONAC2
Interfaces
 Object interfaces allow you to specify what methods a child class must
implement
 Declared with the interface keyword
 Similar to abstract class
 Interface can have only public methods
 No method in interface can have implementation
 Interfaces are inherited with the implements keyword (instead of
extends)
 One class may implement multiple interfaces, if they do not have methods
with same names
Interface Example
interface iTemplate {
public function set ($name, $value);
public function getHTML($template);
}
class Template implements iTemplate {
private $vars = array();
public function set ($name, $value) {
$this->vars[$name] = $value;
}
public function getHTML($template) {
foreach($this->vars as $name=>$value) {
$template = str_replace(
'{'.$name.'}', $value, $template);
}
return $template;
}
}
Questions?
http://www.ifourtechnolab.com/ ASP.NET Software Development Companies India

More Related Content

What's hot (20)

PDF
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
PDF
C# Summer course - Lecture 4
mohamedsamyali
 
PPTX
Advance OOP concepts in Python
Sujith Kumar
 
PDF
Python programming : Inheritance and polymorphism
Emertxe Information Technologies Pvt Ltd
 
PPTX
Lecture 4_Java Method-constructor_imp_keywords
manish kumar
 
PDF
C# Summer course - Lecture 3
mohamedsamyali
 
PPTX
Class object method constructors in java
Raja Sekhar
 
PPTX
‫Object Oriented Programming_Lecture 3
Mahmoud Alfarra
 
PPTX
Core java oop
Parth Shah
 
PPT
C++ classes tutorials
FALLEE31188
 
PDF
Delegate
rsvermacdac
 
PPT
38 object-concepts (1)
Shambhavi Vats
 
PPTX
Lecture - 3 Variables-data type_operators_oops concept
manish kumar
 
PPT
38 object-concepts
raahulwasule
 
PPT
java tutorial 3
Tushar Desarda
 
PPT
java tutorial 2
Tushar Desarda
 
PPTX
Lecture 7 arrays
manish kumar
 
PPT
Java02
Vinod siragaon
 
PDF
Basic object oriented concepts (1)
Infocampus Logics Pvt.Ltd.
 
PDF
Java unit2
Abhishek Khune
 
Python programming : Classes objects
Emertxe Information Technologies Pvt Ltd
 
C# Summer course - Lecture 4
mohamedsamyali
 
Advance OOP concepts in Python
Sujith Kumar
 
Python programming : Inheritance and polymorphism
Emertxe Information Technologies Pvt Ltd
 
Lecture 4_Java Method-constructor_imp_keywords
manish kumar
 
C# Summer course - Lecture 3
mohamedsamyali
 
Class object method constructors in java
Raja Sekhar
 
‫Object Oriented Programming_Lecture 3
Mahmoud Alfarra
 
Core java oop
Parth Shah
 
C++ classes tutorials
FALLEE31188
 
Delegate
rsvermacdac
 
38 object-concepts (1)
Shambhavi Vats
 
Lecture - 3 Variables-data type_operators_oops concept
manish kumar
 
38 object-concepts
raahulwasule
 
java tutorial 3
Tushar Desarda
 
java tutorial 2
Tushar Desarda
 
Lecture 7 arrays
manish kumar
 
Basic object oriented concepts (1)
Infocampus Logics Pvt.Ltd.
 
Java unit2
Abhishek Khune
 

Similar to Object Oriented Programming in PHP (20)

PPTX
OOP in PHP
Henry Osborne
 
PPTX
Only oop
anitarooge
 
PPTX
Lecture-10_PHP-OOP.pptx
ShaownRoy1
 
ZIP
Object Oriented PHP5
Jason Austin
 
PPTX
Object oriented programming in php
Aashiq Kuchey
 
PPTX
Object oriented programming in php 5
Sayed Ahmed
 
PPTX
Object oriented programming in php 5
Sayed Ahmed
 
PPT
Class 7 - PHP Object Oriented Programming
Ahmed Swilam
 
PPT
Synapseindia object oriented programming in php
Synapseindiappsdevelopment
 
PDF
Object_oriented_programming_OOP_with_PHP.pdf
GammingWorld2
 
PPT
Introduction to OOP with PHP
Michael Peacock
 
PDF
OOP in PHP
Tarek Mahmud Apu
 
PPTX
c91632a4-2e92-4edf-b750-358da15ed1b1.pptx
ajayparmeshwarmahaja
 
PDF
Demystifying Object-Oriented Programming #phpbnl18
Alena Holligan
 
PDF
Web 9 | OOP in PHP
Mohammad Imam Hossain
 
PPTX
UNIT III (8).pptx
DrDhivyaaCRAssistant
 
PPTX
UNIT III (8).pptx
DrDhivyaaCRAssistant
 
PPTX
Object Oriented PHP by Dr.C.R.Dhivyaa Kongu Engineering College
Dhivyaa C.R
 
PPTX
Object-Oriented Programming with PHP (part 1)
Bozhidar Boshnakov
 
PPT
UNIT-IV WT web technology for 1st year cs
javed75
 
OOP in PHP
Henry Osborne
 
Only oop
anitarooge
 
Lecture-10_PHP-OOP.pptx
ShaownRoy1
 
Object Oriented PHP5
Jason Austin
 
Object oriented programming in php
Aashiq Kuchey
 
Object oriented programming in php 5
Sayed Ahmed
 
Object oriented programming in php 5
Sayed Ahmed
 
Class 7 - PHP Object Oriented Programming
Ahmed Swilam
 
Synapseindia object oriented programming in php
Synapseindiappsdevelopment
 
Object_oriented_programming_OOP_with_PHP.pdf
GammingWorld2
 
Introduction to OOP with PHP
Michael Peacock
 
OOP in PHP
Tarek Mahmud Apu
 
c91632a4-2e92-4edf-b750-358da15ed1b1.pptx
ajayparmeshwarmahaja
 
Demystifying Object-Oriented Programming #phpbnl18
Alena Holligan
 
Web 9 | OOP in PHP
Mohammad Imam Hossain
 
UNIT III (8).pptx
DrDhivyaaCRAssistant
 
UNIT III (8).pptx
DrDhivyaaCRAssistant
 
Object Oriented PHP by Dr.C.R.Dhivyaa Kongu Engineering College
Dhivyaa C.R
 
Object-Oriented Programming with PHP (part 1)
Bozhidar Boshnakov
 
UNIT-IV WT web technology for 1st year cs
javed75
 
Ad

More from wahidullah mudaser (6)

PDF
AJAX-Asynchronous JavaScript and XML
wahidullah mudaser
 
PDF
XML - Extensive Markup Language
wahidullah mudaser
 
PDF
PHP file handling
wahidullah mudaser
 
PDF
PHP with MySQL
wahidullah mudaser
 
PDF
PHP Arrays - indexed and associative array.
wahidullah mudaser
 
PDF
Introduction to PHP - Basics of PHP
wahidullah mudaser
 
AJAX-Asynchronous JavaScript and XML
wahidullah mudaser
 
XML - Extensive Markup Language
wahidullah mudaser
 
PHP file handling
wahidullah mudaser
 
PHP with MySQL
wahidullah mudaser
 
PHP Arrays - indexed and associative array.
wahidullah mudaser
 
Introduction to PHP - Basics of PHP
wahidullah mudaser
 
Ad

Recently uploaded (20)

PDF
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
PPTX
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PPTX
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
PDF
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
PPTX
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
PPTX
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
The 2025 InfraRed Report - Redpoint Ventures
Razin Mustafiz
 
Designing_the_Future_AI_Driven_Product_Experiences_Across_Devices.pptx
presentifyai
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
OpenID AuthZEN - Analyst Briefing July 2025
David Brossard
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Transforming Utility Networks: Large-scale Data Migrations with FME
Safe Software
 
MuleSoft MCP Support (Model Context Protocol) and Use Case Demo
shyamraj55
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
Transcript: Book industry state of the nation 2025 - Tech Forum 2025
BookNet Canada
 
Seamless Tech Experiences Showcasing Cross-Platform App Design.pptx
presentifyai
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 

Object Oriented Programming in PHP

  • 1. iFour ConsultancyOOP with PHP web Engineering || winter 2017 wahidullah Mudaser [email protected]  Lecture 09  OOP in PHP
  • 2.  Classes and objects  Methods and properties  Scope  Inheritance  Static methods and properties  Constants  Abstraction  interfaces OUTLINE
  • 3.  The idea of Object Oriented Programming is to move the architecture of an application closer to real world  Classes are types of entities  Objects are single units of a given class  Example – Dog is a class, your dog Lassie is an object of class Dog  Classes have methods and properties  Classes and objects help to create well-structured application Classes and objects
  • 4.  Declaring of a class in PHP can be done anywhere in the code.  Two special methods: constructor and destructor  Executed when creating or destroying new object of this class  Used to initialize or cleanup properties and etc. Classes in PHP class Dog { … // declare methods and properties }
  • 5. Classes in PHP  Class definition begins with the class keyword, followed by its name and methods and properties list  Objects of class (instances) are created with the keyword new class A { function foo () { echo "foo here!"; } } $myFirstObject = new A(); $myFirstObject->foo(); // prints out "foo here!"; class name Method name and body Create new object of class A Execute method of this object
  • 6. Constructors  Each class can have only one constructor  All parameters of the creating of the object are passed to the constructor class A { function __construct ($bar) { echo $bar; } function foo () { echo "foo here!"; } } $myFirstObject = new A('test'); // print 'test'
  • 7. Properties  Class can have unlimited number of properties  The $this variable points to the current object – called execution context class A { var $bar; function __construct ($bar) { $this->bar = $bar; } function myPrint () { echo $this->bar; } } $myFirstObject = new A('test'); $myFirstObject->myPrint();
  • 8. More Properties  Class can specify default value for a property  Properties can be accessed from the outside world class A { var $bar = 'default value'; … class A { var $bar = 'default value'; … } $obj = new A; echo $obj->bar;
  • 9. $this  Example of what $this is  Can be used to access methods too class A { var $bar; function __construct ($bar) { $this->bar = $bar; } function myPrint () { echo $this->bar; } } $myFirstObject = new A('test'); $myFirstObject->myPrint(); // prints 'test' $anotherObject = new A('foo'); $anotherObject ->myPrint(); // prints 'foo';
  • 10. Destructors  Each class can have only one destructor  Must be public  Destructors are automatically called when script is shutting down class A { function __construct ($name) { $this->fp = fopen ($name, 'r'); } function __destruct () { fclose($this->fp); } } $myFirstObject = new A('test');
  • 11. Scope  Each method and property has a scope  It defines who can access it  Three levels – public, protected, private  Private can be access only by the object itself  Protected can be accessed by descendant classes (see inheritance)  Public can be accessed from the outside world  Level is added before function keyword or instead of var  var is old style (PHP 4) equivalent to public  Constructors always need to be public
  • 12. Scope Example class A { private $bar; public function __construct ($bar) { $this->bar = $bar; } public function myPrint () { echo $this->bar; } } $myFirstObject = new A('test'); $myFirstObject->myPrint(); // prints 'test' // this will not work: echo $myFirstObject->bar; The $bar variable is private so only the object can access it The myPrint method is public, so everyone can call it
  • 13. Inheritance  A class can inherit (extend) another class  It inherits all its methods and properties class A { public $bar = 'test'; public function example () { … } } class B extends A { … } $obj = new B(); echo $obj->bar; //prints 'test' //calls the A-class function $obj->example();
  • 14. Protected Scope  Method or property, declared as protected can be accessed in classes that inherit it, but cannot be accessed from the outside world class A { protected $bar = 'test'; } class B extends A { public function foo () { // this is allowed $this->bar = 'I see it'; } } $obj = new B(); echo $obj->bar; //not allowed
  • 15. Overriding  When a class inherits another, it can declare methods that override parent class methods  Method names are the same  Parameters may differ class A { public foo() { … } } class B extends A { public foo() { … } }
  • 16. Overriding Example class A { public foo() { echo 'called from A'; } } class B extends A { public foo() { echo 'called from B'; } } $obj1 = new A(); $obj2 = new B(); $obj1->foo(); // executes A's methods $obj2->foo(); // executes B's methods
  • 17. Accessing Parent Class  As -> is used to access object's methods and properties, the :: (double colon) is used to change scope  Scope Resolution Operator  parent:: can be used to access parent's class overridden methods  Example: call parent's constructor in the child one
  • 18. Accessing Parent Class  Example of calling parent constructor class A { protected $variable; public __construct() { $this->variable = 'test'; } } class B extends A { public __construct() { parent::__construct(); echo $this->variable; } } $obj1 = new B(); // prints 'test';
  • 19. The static Keyword  Defining method or property as 'static' makes them accessible without needing an instantiation of a class  Accessed with the double-colon (::) operator instead of the member (->) operator  $this is not available in static methods  Static properties and methods can also have scope defined – public, private or protected
  • 20. The static Keyword  Example of static method and property  Class can access statics with the self keyword  Outside world accesses statics with the class name class A { public static $myVariable; public static function myPrint() { echo self::$myVariable; } } A::$myVariable = 'test'; A::myPrint();
  • 21. Class Constants  Constants in PHP usually are declared with the define function  Constants can be defined in class  Differ from normal variables – no need for $ symbol to declare and access  Declared with the const keyword  Value must be supplied with the declaration  Accessed with scope operator (::)  Can be overridden by child classes  Value must be constant expression, not a variable, class member, result of operation or function call
  • 22. Class Constants  Example of a class constant class A { const myConstant = 'value'; public function showConstant() { echo self::myConstant; } } echo A::myConstant; $obj = new A(); $obj->showConstant();
  • 23. Abstraction  Classes, defined as abstract, cannot have instances (cannot create object of this class)  Abstract class must have at least one abstract method  Abstract methods do not have implementation (body) in the class  Only signature  The class must be inherited  The child class must implement all abstract methods  Cannot increase visibility
  • 24. Abstraction Example abstract class AbstractClass { abstract protected function getValue(); abstract public function getValue2($prefix); public function printOut () { echo $this->getValue(); } } class Class1 extends AbstractClass { protected function getValue (){ return "Class1"; } public function getValue2($prefix) { return $prefix."NAC1"; } }
  • 25. Abstraction Example (2) // continue from previous slide class Class2 extends AbstractClass { protected function getValue (){ return "Class2"; } public function getValue2($prefix) { return $prefix."NAC2"; } } $class1 = new Class1(); $class1->printOut(); // "Class1"; echo $class1->getValue2('FOO'); // FOONAC1 $class2 = new Class2(); $class2->printOut(); // "Class2"; echo $class2->getValue2('FOO'); //FOONAC2
  • 26. Interfaces  Object interfaces allow you to specify what methods a child class must implement  Declared with the interface keyword  Similar to abstract class  Interface can have only public methods  No method in interface can have implementation  Interfaces are inherited with the implements keyword (instead of extends)  One class may implement multiple interfaces, if they do not have methods with same names
  • 27. Interface Example interface iTemplate { public function set ($name, $value); public function getHTML($template); } class Template implements iTemplate { private $vars = array(); public function set ($name, $value) { $this->vars[$name] = $value; } public function getHTML($template) { foreach($this->vars as $name=>$value) { $template = str_replace( '{'.$name.'}', $value, $template); } return $template; } }