Abstraction, Encapsulation, Polymorphism, and Interfaces: whether you’ve been programming in PHP for years or are just starting your journey, these terms can be overwhelming even on a good day. Variables, conditionals, those all make sense. But this whole Object-Oriented thing is WAY more complicated. Not only that, people that already understand it act like it’s so easy and they talk right over the simple questions and never explain the basic concepts in a way that actually makes sense. In this session we’ll take you through real life examples of Object-Oriented terminology in a way that will make sense of all the mumbo jumbo and allow you to utilizing OOP immediately.
Axa Assurance Maroc - Insurer Innovation Award 2024
Demystifying Object-Oriented Programming #ssphp16
1. WELCOME TO ‘INTRO TO OOP WITH PHP’
Thank you for your interest. Files can be found at https://
github.com/sketchings/oop-basics
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us
2. INTRO TO OOP WITH PHP (INTRODUCTION)
A BASIC LOOK INTO OBJECT-ORIENTED PROGRAMMING
3. WHAT IS OOP?
➔Object-Oriented Programing
➔A programming concept that treats functions and
data as objects.
➔A programming methodology based on objects,
instead of functions and procedures
4. OOP VS PROCEDURAL OR FUNCTIONAL
• OOP is built around the "nouns", the things in the
system, and what they are capable of
• Whereas procedural or functional programming
is built around the "verbs" of the system, the
things you want the system to do
5. LET’S GET INTO SOME EXAMPLES
Files can be found at https://github.com/
sketchings/oop-basics
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us
6. WELCOME TO ‘INTRO TO OOP WITH PHP’
PART 1
Thank you for your interest. Files can be found at https://
github.com/sketchings/oop-basics
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us
7. INTRO TO OOP WITH PHP (PART 1)
A BASIC LOOK INTO OBJECT-ORIENTED PROGRAMMING
10. CLASS
• A template/blueprint that facilitates creation of objects.
A set of program statements to do a certain task. Usually
represents a noun, such as a person, place or thing.
• Includes properties and methods — which are class
functions
11. OBJECT
• Instance of a class.
• In the real world object is a material thing that
can be seen and touched.
• In OOP, object is a self-contained entity that
consists of both data and procedures.
12. INSTANCE
• Single occurrence/copy of an object
• There might be one or several objects, but an
instance is a specific copy, to which you can have
a reference
13. class User { //class
private $name; //property
public getName() { //method
echo $this->name;
}
}
$user1 = new User(); //first instance of object
$user2 = new User(); //second instance of object
14. ABSTRACTION
• “An abstraction denotes the essential characteristics
of an object that distinguish it from all other kinds of
object and thus provide crisply defined conceptual
boundaries, relative to the perspective of the viewer.”
— G. Booch
• This is the class architecture itself.
15. ENCAPSULATION
• Scope. Controls who can access what. Restricting
access to some of the object’s components (properties
and methods), preventing unauthorized access.
• Public - everyone
• Protected - inherited classes
• Private - class itself, not children
16. • class User {
protected $name;
protected $title;
public function getFormattedSalutation() {
return $this->getSalutation();
}
protected function getSalutation() {
return $this->title . " " . $this->name;
}
public function getName() {
return $this->name;
}
public function setName($name) {
$this->name = $name;
}
public function getTitle() {
return $this->title;
}
public function setTitle($title) {
$this->title = $title;
}
}
17. CREATING / USING THE OBJECT INSTANCE
$user = new User();
$user->setName("Jane Smith");
$user->setTitle("Ms");
echo $user->getFormattedSalutation();
When the script is run, it will return:
Ms Jane Smith
18. CONSTRUCTOR METHOD & MAGIC METHODS
class User {
protected $name;
protected $title;
public function __construct($name, $title) {
$this->name = $name;
$this->title = $title;
}
public function __toString() {
return $this->getFormattedSalutation();
}
...
}
For more see http://php.net/manual/en/language.oop5.magic.php
19. CREATING / USING THE OBJECT INSTANCE
$user = new User("Jane Smith","Ms");
echo $user;
When the script is run, it will return the same result as before:
Ms Jane Smith
20. INHERITANCE: PASSES KNOWLEDGE DOWN
• Subclass, parent and a child relationship, allows for
reusability, extensibility.
• Additional code to an existing class without modifying it.
Uses keyword “extends”
• NUTSHELL: create a new class based on an existing class
with more data, create new objects based on this class
21. CREATING AND USING A CHILD CLASS
class Developer extends User {
public $skills = array();
public function getSalutation() {
return $this->title . " " . $this->name. ", Developer";
}
public function getSkillsString() {
echo implode(", ",$this->skills);
}
}
$developer = new Developer("Jane Smith", "Ms");
echo $developer;
echo "<br />";
$developer->skills = array("JavasScript", "HTML", "CSS");
$developer->skills[] = "PHP";
$developer->getSkillsString();
22. WHEN RUN, THE SCRIPT RETURNS:
Ms Jane Smith
JavasScript, HTML, CSS, PHP
24. THANK YOU FROM ALENA HOLLIGAN
Files at https://github.com/sketchings/oop-basics
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us
25. WELCOME TO ‘INTRO TO OOP WITH
PHP’ PART 2
Thank you for your interest. Files can be found at https://github.com/
sketchings/oop-basics
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us
26. INTRO TO OOP WITH PHP (PART 2)
A BASIC LOOK INTO OBJECT-ORIENTED PROGRAMMING
30. POLYMORPHISM
Polymorphism describes a pattern in object oriented programming in
which classes have different functionality while sharing a common
interface
31. INTERFACE
• Interface, specifies which methods a class must implement.
• All methods in interface must be public.
• Multiple interfaces can be implemented by using comma separation
• Interface may contain a CONSTANT, but may not be overridden by
implementing class
32. interface UserInterface {
public function getFormattedSalutation();
public function getName();
public function setName($name);
public function getTitle();
public function setTitle($title);
}
class User implements UserInterface { … }
33. ABSTRACT
An abstract class is a mix between an interface and a class. It can define
functionality as well as interface (in the form of abstract methods).
Classes extending an abstract class must implement all of the abstract
methods defined in the abstract class.
34. abstract class User { //class
public $name; //property
public getName() { //method
echo $this->name;
}
abstract public function setName($name);
}
class Developer extends User { … }
35. NAMESPACES
• Help create a new layer of code encapsulation
• Keep properties from colliding between areas of your code
• Only classes, interfaces, functions and constants are
affected
• Anything that does not have a namespace is considered in
the Global namespace (namespace = "")
36. NAMESPACES
• must be declared first (except 'declare)
• Can define multiple in the same file
• You can define that something be used in the "Global" namespace by
enclosing a non-labeled namespace in {} brackets.
• Use namespaces from within other namespaces, along with aliasing
37. • namespace myUser;
• class User { //class
• public $name; //property
• public getName() { //method
• echo $this->name;
• }
• public function setName($name);
• }
• class Developer extends myUserUser { … }
39. CHALLENGES
1. Change to User class to an abstract class.
2. Throw an error because your access is too restricted.
3. Extend the User class for another type of user, such as our
Developer example
4. Define 2 “User” classes in one file using namespacing
40. THANK YOU FROM ALENA HOLLIGAN
I hope you enjoyed this presentation and learned a lot in the
short time we had. Please stay tuned for more and fill out the
survey to help improve the training.
Contact Info:
www.sketchings.com
@sketchings
alena@holligan.us