SlideShare a Scribd company logo
1 of 29
Download to read offline


!
!
!
Learn Object Oriented
Programming (OOP) in PHP
!
!
!
!
!
!
!
!
!
!
!
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
Preamble
The hardest thing to learn (and teach btw,) in object oriented PHP … is the basics.
But once you get them under-your-belt, the rest will come much, much easier.
But don't be discouraged! You just found the easiest to understand tutorial out
there on OOP and PHP. It may sound like a boastful claim … I know. But that's what
the nerd zeitgeist is saying.
… Or so I've been told.
Videos
As an extra bonus, I've created a few video tutorials for you. They cover the same
material as the written article and are designed to reinforce the article.
• Introduction to Object Oriented PHP (4:05)
• Why learn Object Oriented PHP (14:46)
• Objects and Classes in PHP (5:26)
• Build Objects in PHP - Part 1 (9:14)
• Build Objects in PHP - Part 2 (9:41)
• Build Objects in PHP - Part 3 (6:18)
If you have questions/comments, you can contact me at: stefan@killersites.com
!
!
!
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
Learn Object Oriented Programming (OOP) in PHP
Object-Oriented Programming (OOP) is a type of programming added to php5 that
makes building complex, modular and reusable web applications that much easier.
With the release of php5, php programmers finally had the power to code with the
'big boys'. Like Java and C#, php finally has a complete OOP infrastructure.
In this tutorial, you will be guided (step-by-step) through the process of building and
working with objects using php's built-in OOP capabilities. At the same time you will
learn:
• The difference between building a php application the old fashioned (procedural)
way, versus the OOP way.
• What the basic OOP principles are, and how to use them in PHP.
• When you would want to use OOP in your PHP scripts.
People run into confusion when programming because of some lack of
understanding of the basics. With this in mind, we are going to slowly go over key
OOP principles while creating our own PHP objects. With this knowledge, you will
be able to explore OOP further.
For this tutorial, you should understand a few PHP basics: functions, variables,
conditionals and loops.
To make things easy, the tutorial is divided into 23 steps.
!
!
!
!
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
STEP 1:
First thing we need to do is create two PHP pages:
• index.php
• class_lib.php
OOP is all about creating modular code, so our object oriented PHP code will be
contained in dedicated files that we will then insert into our normal PHP page using
php 'includes'. In this case all our OO PHP code will be in the PHP file:
• class_lib.php
OOP revolves around a construct called a 'class'. Classes are the cookie-cutters /
templates that are used to define objects.
!
STEP 2: Create a PHP class
Instead of having a bunch of functions, variables and code floating around willy-
nilly, to design your php scripts or code libraries the OOP way, you'll need to define/
create your own classes.
You define your own class by starting with the keyword 'class' followed by the name
you want to give your new class.
1. <?php!
2. class person {!
3. !
4. }!
!
!
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
STEP 3: Add data to your class
Classes are the blueprints for php objects - more on that later. One of the big
differences between functions and classes is that a class contains both data
(variables) and functions that form a package called an: 'object'. When you create a
variable inside a class, it is called a 'property'.
1. <?php!
2. class person {!
3. var $name;!
4. }!
Note: The data/variables inside a class (ex: var name;) are called 'properties'.
!
STEP 4: Add functions/methods to your class
In the same way that variables get a different name when created inside a class
(they are called: properties,) functions also referred to (by nerds) by a different
name when created inside a class - they are called 'methods'.
A classes' methods are used to manipulate its' own data / properties.
1. <?php!
2. class person {!
3. var $name;!
4. !
5. function set_name($new_name) {! !
6. !! $this->name = $new_name;! ! !
7. !}! !
8. !!
9. !function get_name() {!
10. !! return $this->name;! !
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
11. !}!
12. }!
Note: Don't forget that in a class, variables are called 'properties'.
!
STEP 5: Getter and setter functions
We've created two interesting functions/methods: get_name() and set_name().
These methods follow a common OOP convention that you see in many languages
(including Java and Ruby) - where you create methods to 'set' and 'get' properties in
a class.
Another convention (a naming convention,) is that getter and setter names should
match the property names.
1. <?php!
2. class person {!
3. var $name;!
4. !
5. function set_name($new_name) {! !
6. !! $this->name = $new_name;! ! !
7. !}! !
8. !!
9. !function get_name() {!
10. !! return $this->name;! !
11. !}!
12. }!
Note: Notice that the getter and setter names, match the associated property
name.
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
This way, when other PHP programmers want to use your objects, they will know
that if you have a method/function called 'set_name()', there will be a property/
variable called 'name'.
!
STEP 6: The '$this' variable
You probably noticed this line of code: $this->name = $new_name
The $this is a built-in variable (built into all objects) which points to the current
object. Or in other words, $this is a special self-referencing variable. You use $this
to access properties and to call other methods of the current class.
1. function get_name() {!
2. !return $this->name;! !
3. }!
Note: This may be a bit confusing for some of you … that's because you are seeing
for the first time, one of those built in OO capabilities (built into PHP5 itself) that
automatically does stuff for us.
For now, just think of $this as a special OO PHP keyword. When PHP comes across
$this, the PHP engine knows what to do.
… Hopefully soon, you will too!
!
STEP 7: Include your class in your main PHP page
You would never create your PHP classes directly inside your main php pages - that
would help defeat the purposes of object oriented PHP in the first place!
Instead, it is always best practice to create separate php pages that only contain
your classes. Then you would access your php objects/classes by including them in
your main php pages with either a php 'include' or 'require'.
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
1. <!DOCTYPE html>!
2. <html>!
3. !
4. <head>!
5. <meta charset="UTF-8">!
6. <title>OOP in PHP</title>!
7. !
8. <?php include("class_lib.php"); ?>!
9. !
10. </head>!
11. !
12. <body>!
13. </body>!
14. !
15. </html>!
Note: Notice how we haven't done anything with our class yet. We will do that next.
!
STEP 8: Instantiate/create your object
Classes are the blueprints/templates of php objects. Classes don't actually become
objects until you do something called: instantiation.
When you instantiate a class, you create an instance of it, thus creating the object.
In other words, instantiation is the process of creating an instance of an object in
memory. What memory? The server's memory of course!
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
5. <?php!
6. $stefan = new person();!
7. ?>!
8. !
9. </body>!
10. </html>!
Note: The variable $stefan becomes a handle/reference to our newly created
person object. I call $stefan a 'handle', because we will use $stefan to control and
use the person object.
If you run the PHP code now, you will not see anything displayed on your pages.
The reason for this, is because we have not told PHP to do anything with the object
we just created …
!
STEP 9: The 'new' keyword
To create an object out of a class, you need to use the 'new' keyword.
When creating/instantiating a class, you can optionally add brackets to the class
name, as I did in the example below. To be clear, you can see in the code below how
I can create multiple objects from the same class.
… From the PHP's engine point of view, each object is its' own entity. Does that
make sense?
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. $stefan = new person();!
7. $jimmy = new person();!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
8. ?>!
9. </body>!
10. </html>!
Note: When creating an object, be sure not to quote the class name. For example:
$stefan = new 'person'; … will get you an error.
!
STEP 10: Set an objects properties
Now that we've created/instantiated our two separate 'person' objects, we can set
their properties using the methods (the setters) we created.
Please keep in mind that though both our person objects ($stefan and $nick) are
based on the same 'person' class, as far as php is concerned, they are totally
different objects.
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. $stefan = new person();!
7. $jimmy = new person();!
8. !
9. $stefan->set_name("Stefan Mischook");!
10. $jimmy->set_name("Nick Waddles");!
11. ?>!
12. !
13. </body>!
14. </html>!
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
STEP 11: Accessing an object's data
Now we use the getter methods to access the data held in our objects … this is the
same data we inserted into our objects using the setter methods.
When accessing methods and properties of a class, you use the arrow (->) operator.
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. $stefan = new person();!
7. $jimmy = new person();!
8. !
9. $stefan->set_name("Stefan Mischook");!
10. $jimmy->set_name("Nick Waddles");!
11. !
12. echo "Stefan's full name: " . $stefan->get_name();!
13. echo "Nick's full name: " . $jimmy->get_name();!
14. ?>!
15. </body>!
16. </html>!
Note: The arrow operator (->) is not the same operator used with associative
arrays: =>.
Congratulations, you've made it half way through the tutorial! Time to take a little
break and have some tea … OK, maybe some beer.
In a short period of time, you've:
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
• Designed a PHP class.
• Generate/created a couple of objects based on your class.
• Inserted data into your objects.
• Retrieved data from your objects.
… Not bad for your first day on the OO PHP job.
If you haven't already, now is a great time to write out the code and watch it in
action in your own PHP pages.
!
STEP 12: Directly accessing properties - don't do it!
You don't have to use methods to access objects properties; you can directly get to
them using the arrow operator (->) and the name of the variable.
For example: with the property $name (in object $stefan,) you could get its' value
like so: $stefan->name.
Though doable, it is considered bad practice to do it because it can lead to trouble
down the road. You should use getter methods instead - more on that later.
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. $stefan = new person();!
7. $jimmy = new person();!
8. !
9. $stefan->set_name("Stefan Mischook");!
10. $jimmy->set_name("Nick Waddles");!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
11. !
12. // directly accessing properties in a class is a no-no.!
13. echo "Stefan's full name: " . $stefan->name;!
14. ?>!
15. </body>!
16. </html>!
!
STEP 13: Constructors
All objects can have a special built-in method called a 'constructor'. Constructors
allow you to initialize your object's properties (translation: give your properties
values,) when you instantiate (create) an object.
Note: If you create a __construct() function (it is your choice,) PHP will automatically
call the __construct() method/function when you create an object from your class.
The 'construct' method starts with two underscores (__) and the word 'construct'.
You 'feed' the constructor method by providing a list of arguments (like a function)
after the class name.
1. <?php!
2. class person {!
3. var $name;!
4. !
5. function __construct($persons_name) {!
6. $this->name = $persons_name;!
7. }!
8. !!
9. function set_name($new_name) {! !
10. $this->name = $new_name;! ! !
11. }!!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
12. !!
13. function get_name() {! ! !
14. return $this->name;!
15. }!
16. } !
17. ?>!
!
For the rest of this tutorial, I'm going to stop reminding you that:
• Functions = methods
• Variables = properties
… Since this is an OO PHP tutorial I will now use the OO terminology.
!
STEP 14: Create an object with a constructor
Now that we've created a constructor method, we can provide a value for the
$name property when we create our person objects.
For example: $stefan = new person("Stefan Mischook");
This saves us from having to call the set_name() method reducing the amount of
code. Constructors are common and are used often in PHP, Java etc.
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. $stefan = new person("Stefan Mischook");!
7. echo "Stefan's full name: " . $stefan->get_name();!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
8. ?>!
9. </body>!
10. </html>!
This is just a tiny example of how the mechanisms built into OO PHP can save you
time and reduce the amount of code you need to write. Less code means less bugs.
!
STEP 15: Restricting access to properties using 'access modifiers'
One of the fundamental principles in OOP is 'encapsulation'. The idea is that you
create cleaner better code, if you restrict access to the data structures (properties)
in your objects.
You restrict access to class properties using something called 'access modifiers'.
There are 3 access modifiers:
• public
• private
• protected
Public is the default modifier.
1. <?php!
2. class person {!
3. var $name;!
4. public $height;!
5. protected $social_insurance;!
6. private $pinn_number;!
7. !
8. function __construct($persons_name) {!
9. $this->name = $persons_name;!
10. }!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
11. !!
12. function set_name($new_name) {! !
13. $this->name = $new_name;! ! !
14. }!!
15. !!
16. function get_name() {! ! !
17. return $this->name;!
18. }!
19. } !
20. ?>!
Note: When you declare a property with the 'var' keyword, it is considered 'public'.
!
STEP 16: Restricting access to properties: Part 2
When you declare a property as 'private', only the same class can access the
property.
When a property is declared 'protected', only the same class and classes derived
from that class can access the property - this has to do with inheritance …more on
that later.
Properties declared as 'public' have no access restrictions, meaning anyone can
access them.
To help you understand this (probably) foggy aspect of OOP, try out the following
code and watch how PHP reacts. Tip: read the comments in the code for more
information:
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
5. <?php!
6. $stefan = new person("Stefan Mischook");! !
7. !
8. echo "Stefan's full name: " . $stefan->get_name();!
9. !
10. /*!
11. Since $pinn_number was declared private, this line of code !
12. will generate an error. Try it out! !
13. */!
14. !
15. echo "Tell me private stuff: " . $stefan->$pinn_number;!
16. ?>!
17. </body>!
18. </html>!
!
STEP 17: Restricting access to methods
Like properties, you can control access to methods using one of the three access
modifiers:
• public
• protected
• private
Why do we have access modifiers?
The reason for access modifiers comes down to control: it is makes sense to control
how people use classes.
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
The reasons for access modifiers and other OO constructs, can get tricky to
understand … since we are just beginners here. So give yourself a chance!
That said, I think we can summarize and say that many OOP constructs exist, with
idea the many programmers may be working on a project …
1. <?php!
2. class person {!
3. var $name;!
4. public $height;!
5. protected $social_insurance;!
6. private $pinn_number;!
7. !
8. function __construct($persons_name) {!
9. $this->name = $persons_name;!
10. }!
11. !
12. private function get_pinn_number() {!
13. return $this->$pinn_number;!
14. !}!
15. } !
16. ?>!
Note: Since the method get_pinn_number() is 'private', the only place you can use
this method is in the same class - typically in another method. If you wanted to call/
use this method directly in your PHP pages, you would need to declare it 'public'.
Nerd Note: Again, it is important (as we go along,) that you actually try the code
yourself. It makes a HUGE difference!
!
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
STEP 18: Reusing code the OOP way: inheritance
Reusing code the OOP way: inheritance
Inheritance is a fundamental capability/construct in OOP where you can use one
class, as the base/basis for another class … or many other classes.
Why do it?
Doing this allows you to efficiently reuse the code found in your base class.
Say, you wanted to create a new 'employee' class … since we can say that 'employee'
is a type/kind of 'person', they will share common properties and methods.
… Making some sense?
In this type of situation, inheritance can make your code lighter … because you are
reusing the same code in two different classes. But unlike 'old-school' PHP:
• You only have to type the code out once.
• The actual code being reused, can be reused in many (unlimited) classes but it is
only typed out in one place … conceptually, this is sort-of like PHP includes().
Take a look at the sample code:
1. <?php!
2. // 'extends' is the keyword that enables inheritance!
3. !
4. class employee extends person {!
5. function __construct($employee_name) {!
6. !
7. }!
8. } !
9. ?>!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
STEP 19: Reusing code with inheritance: Part 2
Because the class 'employee' is based on the class 'person', 'employee'
automatically has all the public and protected properties and methods of 'person'.
Nerd note: Nerds would say that 'employee' is a type of person.
The code:
1. <?php!
2. // 'extends' is the keyword that enables inheritance!
3. !
4. class employee extends person {!
5. function __construct($employee_name) {!
6. $this->set_name($employee_name);!
7. }!
8. } !
9. ?>!
Notice how we are able to use set_name() in 'employee', even though we did not
declare that method in the 'employee' class. That's because we already created
set_name() in the class 'person'.
Nerd Note: the 'person' class is called (by nerds,) the 'base' class or the 'parent'
class because it's the class that the 'employee' is based on. This class hierarchy can
become important down the road when your projects become more complex.
!
STEP 20: Reusing code with inheritance: Part 3
As you can see in the code snippet below, we can call get_name on our 'employee'
object, courtesy of 'person'.
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
This is a classic example of how OOP can reduce the number of lines of code (don't
have to write the same methods twice) while still keeping your code modular and
much easier to maintain.
1. <?php include("class_lib.php"); ?>!
2. </head>!
3. !
4. <body>!
5. <?php!
6. // Using our PHP objects in our PHP pages.!
7. $stefan = new person("Stefan Mischook");!
8. echo "Stefan's full name: " . $stefan->get_name();!
9. !
10. $james = new employee("Johnny Fingers");!
11. echo "---> " . $james->get_name();!
12. !
13. ?>!
14. </body>!
15. </html>!
!
STEP 21: Overriding methods
Sometimes (when using inheritance,) you may need to change how a method works
from the base class.
For example, let's say set_name() method in the 'employee' class, had to do
something different than what it does in the 'person' class.
You 'override' the 'person' classes version of set_name(), by declaring the same
method in 'employee'.
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
1. <?php!
2. // explicitly adding class properties are optional - but is good !
3. // practice!
4. !
5. class person {!
6. var $name;!
7. !
8. function __construct($persons_name) {!
9. $this->name = $persons_name;!
10. }!
11. !!
12. function get_name() {! ! !
13. return $this->name;!
14. }!
15. !
16. // protected methods and properties restrict access to those !
17. // elements!
18. !
19. !protected function set_name($new_name) {!
20. !! if ($this->name != "Jimmy Two Guns") {!
21. !! $this->name = strtoupper($new_name);!
22. !! }!
23. !}!
24. } !
25. !
26. // 'extends' is the keyword that enables inheritance!
27. class employee extends person {!
28. !
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
29. !protected function set_name($new_name) {!
30. !! if ($new_name == "Stefan Lamp") {!
31. !! ! $this->name = $new_name;!
32. !! }!
33. !}!
34. !!
35. !function __construct($employee_name) {!
36. !! $this->set_name($employee_name);!
37. !}!
38. }!
39. ?>!
Notice how set_name() is different in the 'employee' class from the version found in
the parent class: 'person'.
!
STEP 22: Overriding methods: Part 2
Sometimes you may need to access your base class's version of a method you
overrode in the derived (sometimes called 'child') class.
In our example, we overrode the set_name() method in the 'employee' class. Now
I've now used this code:
person::set_name($new_name);
… to access the parent class' (person) version of the set_name() method.
1. <?php!
2. // explicitly adding class properties are optional - but is good !
3. // practice!
4. !
5. class person {!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
6. var $name;!
7. !
8. function __construct($persons_name) {!
9. $this->name = $persons_name;!
10. }!
11. !!
12. public function get_name() {!! !
13. return $this->name;!
14. }!
15. !
16. // protected methods and properties restrict access to those !
17. // elements!
18. !
19. !protected function set_name($new_name) {!
20. !! if (name != "Jimmy Two Guns") {!
21. !! $this->name = strtoupper($new_name);!
22. !! }!
23. !}!
24. } !
25. !
26. // 'extends' is the keyword that enables inheritance!
27. class employee extends person {!
28. !
29. !protected function set_name($new_name) {!
30. !! if ($new_name == "Stefan Lamp") {!
31. !! ! $this->name = $new_name;!
32. !! }!
33. else if($new_name == "Johnny Fingers") {!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
34. !! ! person::set_name($new_name);!
35. !! }!
36. !}!
37. !!
38. !function __construct($employee_name) {!
39. !! $this->set_name($employee_name);!
40. !}!
41. }!
42. ?>!
!
STEP 23: Overriding methods: Part 3
Using :: allows you to specifically name the class where you want PHP to search for
a method - 'person::set_name()' tells PHP to search for set_name() in the 'person'
class.
There is also a shortcut if you just want refer to current class's parent: by using the
'parent' keyword.
1. <?php!
2. // explicitly adding class properties are optional - but is good !
3. // practice!
4. !
5. class person {!
6. var $name;!
7. !
8. function __construct($persons_name) {!
9. $this->name = $persons_name;!
10. }!
11. !!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
12. function get_name() {! ! !
13. return $this->name;!
14. }!
15. !
16. // protected methods and properties restrict access to those !
17. // elements!
18. !
19. !protected function set_name($new_name) {!
20. !! if (name != "Jimmy Two Guns") {!
21. !! $this->name = strtoupper($new_name);!
22. !! }!
23. !}!
24. } !
25. !
26. // 'extends' is the keyword that enables inheritance!
27. class employee extends person {!
28. !
29. !protected function set_name($new_name) {!
30. !! if ($new_name == "Stefan Lamp") {!
31. !! ! $this->name = $new_name;!
32. !! }!
33. else if($new_name == "Johnny Fingers") {!
34. !! ! parent::set_name($new_name);!
35. !! }!
36. !}!
37. !!
38. !function __construct($employee_name) {!
39. !! $this->set_name($employee_name);!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
40. !}!
41. }!
42. ?>!
!
Final Comments
We've only touched on the basics of OO PHP. But you should have enough
information to feel comfortable moving forward.
Remember that the best way to really have this stuff sink in, is by actually writing
code for fun.
I would suggest creating say 10 simple objects that do simple things, and then use
those objects in actual PHP pages. Once you've done that, you will feel very
comfortable with objects.
Why learn OOP in PHP - another take.
For people new to OOP and are comfortable with 'classic' procedural php, you may
be wondering why should you even bother to learn object oriented concepts … why
go through the trouble?
The PHP world:
PHP is moving in an OOP direction. For example, many important PHP extensions
like PEAR and Smarty are OO based. So, to really understand and use these
frameworks properly, you need to understand object oriented PHP.
The functional/practical advantages:
For smaller projects, using object oriented PHP may be overkill. That said, object
oriented PHP really begins to shine as the project becomes more complex, and
when you have more than one person doing the programming.
!
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
For example:
If you find that you have say 10-20 or more functions and you find that some of the
functions are doing similar things … it is time to consider packaging things up into
objects and using OOP.
OOP and your career as a programmer:
OOP is the modern way of software development and all the major languages (Java,
PERL, PHP, C#, Ruby) use this method of programming. As a software developer/
programmer, it only makes sense (in terms of career,) to keep your skills up-to-date.
Besides making you a more valuable PHP coder, understanding OOP in PHP will
give you knowledge (OOP knowledge,) that you will be able to take with you into
other languages.
… When you learn OOP in PHP, you'll learn object oriented programming for any OO
based language.
You will find with time that creating OOP based PHP projects, will just make your life
as a programmer much easier. As an added bonus, soon you will develop your own
collection of reusable objects, which you will be able to leverage in other projects.
Finally, You will also find that OOP based PHP is much easier to maintain and
update.
OOP Challenges:
OO PHP does present some challenges when you first start out because you'll need
to learn to think about your PHP projects in a different way: you will need to
conceptualise the project in terms of objects.
More details …
One common way of starting an object-oriented project is to start by drawing up
simple diagrams of your objects. As you begin to work with object diagrams, you
will find that they help make developing OOP based PHP projects much easier.
Here are a few tips about drawing object-diagrams:
© 1996 - 2013 www.killerphp.com
LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP
• Use a paper and pencil
• Draw boxes to represent each object
• In those boxes, list your methods and your properties
• Use arrows and lines between boxes to denote relationships (parent - child)
between objects.
So if you have been sitting on the fence waiting to jump into OO PHP, now is as
good time as any to get started.
!
Stefan Mischook
www.killerphp.com
www.killersites.com
© 1996 - 2013 www.killerphp.com

More Related Content

What's hot

Intro to Objective C
Intro to Objective CIntro to Objective C
Intro to Objective CAshiq Uz Zoha
 
Zend Framework And Doctrine
Zend Framework And DoctrineZend Framework And Doctrine
Zend Framework And Doctrineisaaczfoster
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPnsandonato
 
Basic online java course - Brainsmartlabs
Basic online java course  - BrainsmartlabsBasic online java course  - Brainsmartlabs
Basic online java course - Brainsmartlabsbrainsmartlabsedu
 
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkHanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkNguyen Duc Phu
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkRyan Weaver
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails IntroductionThomas Fuchs
 
How to learn to build your own PHP framework
How to learn to build your own PHP frameworkHow to learn to build your own PHP framework
How to learn to build your own PHP frameworkDinh Pham
 
Core java programming tutorial - Brainsmartlabs
Core java programming tutorial - BrainsmartlabsCore java programming tutorial - Brainsmartlabs
Core java programming tutorial - Brainsmartlabsbrainsmartlabsedu
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)dannygriff1
 
Java object oriented programming concepts - Brainsmartlabs
Java object oriented programming concepts - BrainsmartlabsJava object oriented programming concepts - Brainsmartlabs
Java object oriented programming concepts - Brainsmartlabsbrainsmartlabsedu
 
Core Java Basics
Core Java BasicsCore Java Basics
Core Java BasicsFayis-QA
 

What's hot (17)

Intro to Objective C
Intro to Objective CIntro to Objective C
Intro to Objective C
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
Zend Framework And Doctrine
Zend Framework And DoctrineZend Framework And Doctrine
Zend Framework And Doctrine
 
Php oop (1)
Php oop (1)Php oop (1)
Php oop (1)
 
Creating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTPCreating Custom Dojo Widgets Using WTP
Creating Custom Dojo Widgets Using WTP
 
Basic online java course - Brainsmartlabs
Basic online java course  - BrainsmartlabsBasic online java course  - Brainsmartlabs
Basic online java course - Brainsmartlabs
 
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.frameworkHanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
Hanoi php day 2008 - 01.pham cong dinh - how.to.build.your.own.framework
 
Oop's
Oop'sOop's
Oop's
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
 
Ruby On Rails Introduction
Ruby On Rails IntroductionRuby On Rails Introduction
Ruby On Rails Introduction
 
How to learn to build your own PHP framework
How to learn to build your own PHP frameworkHow to learn to build your own PHP framework
How to learn to build your own PHP framework
 
Core java programming tutorial - Brainsmartlabs
Core java programming tutorial - BrainsmartlabsCore java programming tutorial - Brainsmartlabs
Core java programming tutorial - Brainsmartlabs
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)
 
Exploring Kotlin
Exploring KotlinExploring Kotlin
Exploring Kotlin
 
Java object oriented programming concepts - Brainsmartlabs
Java object oriented programming concepts - BrainsmartlabsJava object oriented programming concepts - Brainsmartlabs
Java object oriented programming concepts - Brainsmartlabs
 
Core Java Basics
Core Java BasicsCore Java Basics
Core Java Basics
 
Metaprogramming with javascript
Metaprogramming with javascriptMetaprogramming with javascript
Metaprogramming with javascript
 

Similar to Oop in php_tutorial

oop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comoop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comtutorialsruby
 
oop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comoop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comtutorialsruby
 
Oop in php_tutorial_for_killerphp.com
Oop in php_tutorial_for_killerphp.comOop in php_tutorial_for_killerphp.com
Oop in php_tutorial_for_killerphp.comayandoesnotemail
 
Basic Oops concept of PHP
Basic Oops concept of PHPBasic Oops concept of PHP
Basic Oops concept of PHPRohan Sharma
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperNyros Technologies
 
Php mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanPhp mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanphp2ranjan
 
php training in hyderabad
php training in hyderabadphp training in hyderabad
php training in hyderabadphp2ranjan
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroChristopher Pecoraro
 
Winter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPWinter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPtutorialsruby
 
Winter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPWinter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPtutorialsruby
 
Php tips and tricks by omar bin sulaiman
Php tips and tricks by omar bin sulaimanPhp tips and tricks by omar bin sulaiman
Php tips and tricks by omar bin sulaimanOmar Bin Sulaiman
 
06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptxThắng It
 

Similar to Oop in php_tutorial (20)

oop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comoop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.com
 
oop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.comoop_in_php_tutorial_for_killerphp.com
oop_in_php_tutorial_for_killerphp.com
 
Oop in php_tutorial_for_killerphp.com
Oop in php_tutorial_for_killerphp.comOop in php_tutorial_for_killerphp.com
Oop in php_tutorial_for_killerphp.com
 
Oop in php tutorial
Oop in php tutorialOop in php tutorial
Oop in php tutorial
 
Oops in PHP
Oops in PHPOops in PHP
Oops in PHP
 
Oops in php
Oops in phpOops in php
Oops in php
 
Basic Oops concept of PHP
Basic Oops concept of PHPBasic Oops concept of PHP
Basic Oops concept of PHP
 
Introduction Php
Introduction PhpIntroduction Php
Introduction Php
 
Oops in PHP By Nyros Developer
Oops in PHP By Nyros DeveloperOops in PHP By Nyros Developer
Oops in PHP By Nyros Developer
 
tutorial54
tutorial54tutorial54
tutorial54
 
tutorial54
tutorial54tutorial54
tutorial54
 
Php mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanPhp mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjan
 
php training in hyderabad
php training in hyderabadphp training in hyderabad
php training in hyderabad
 
Oops concept in php
Oops concept in phpOops concept in php
Oops concept in php
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher Pecoraro
 
Winter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPWinter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHP
 
Winter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHPWinter%200405%20-%20Beginning%20PHP
Winter%200405%20-%20Beginning%20PHP
 
Php tips and tricks by omar bin sulaiman
Php tips and tricks by omar bin sulaimanPhp tips and tricks by omar bin sulaiman
Php tips and tricks by omar bin sulaiman
 
Using PHP
Using PHPUsing PHP
Using PHP
 
06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx06-classes.ppt (copy).pptx
06-classes.ppt (copy).pptx
 

More from Gregory Hanis

To cert or not to cert
To cert or not to certTo cert or not to cert
To cert or not to certGregory Hanis
 
Telehack: May the Command Line Live Forever
Telehack: May the Command Line Live ForeverTelehack: May the Command Line Live Forever
Telehack: May the Command Line Live ForeverGregory Hanis
 
IDS+Honeypots Making Security Simple
IDS+Honeypots Making Security SimpleIDS+Honeypots Making Security Simple
IDS+Honeypots Making Security SimpleGregory Hanis
 
Rollingstone greghanis
Rollingstone greghanisRollingstone greghanis
Rollingstone greghanisGregory Hanis
 
Penetration testing is a field which has experienced rapid growth over the years
Penetration testing is a field which has experienced rapid growth over the yearsPenetration testing is a field which has experienced rapid growth over the years
Penetration testing is a field which has experienced rapid growth over the yearsGregory Hanis
 
Javascript Deofuscation A manual Approach
Javascript Deofuscation A manual ApproachJavascript Deofuscation A manual Approach
Javascript Deofuscation A manual ApproachGregory Hanis
 

More from Gregory Hanis (14)

Hacker bootcamp
Hacker bootcampHacker bootcamp
Hacker bootcamp
 
To cert or not to cert
To cert or not to certTo cert or not to cert
To cert or not to cert
 
Windows great again
Windows great againWindows great again
Windows great again
 
Telehack: May the Command Line Live Forever
Telehack: May the Command Line Live ForeverTelehack: May the Command Line Live Forever
Telehack: May the Command Line Live Forever
 
IDS+Honeypots Making Security Simple
IDS+Honeypots Making Security SimpleIDS+Honeypots Making Security Simple
IDS+Honeypots Making Security Simple
 
Anonymizers
AnonymizersAnonymizers
Anonymizers
 
Suncoastscam
SuncoastscamSuncoastscam
Suncoastscam
 
Rollingstone greghanis
Rollingstone greghanisRollingstone greghanis
Rollingstone greghanis
 
Penetration testing is a field which has experienced rapid growth over the years
Penetration testing is a field which has experienced rapid growth over the yearsPenetration testing is a field which has experienced rapid growth over the years
Penetration testing is a field which has experienced rapid growth over the years
 
Linuxserver harden
Linuxserver hardenLinuxserver harden
Linuxserver harden
 
Intrusion Detection
Intrusion DetectionIntrusion Detection
Intrusion Detection
 
security IDS
security IDSsecurity IDS
security IDS
 
Pm final project
Pm final projectPm final project
Pm final project
 
Javascript Deofuscation A manual Approach
Javascript Deofuscation A manual ApproachJavascript Deofuscation A manual Approach
Javascript Deofuscation A manual Approach
 

Recently uploaded

UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfNirmal Dwivedi
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.MaryamAhmad92
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptxMaritesTamaniVerdade
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17Celine George
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingTechSoup
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfciinovamais
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...pradhanghanshyam7136
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfSherif Taha
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdfQucHHunhnh
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.christianmathematics
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfagholdier
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxAreebaZafar22
 
Magic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptxMagic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptxdhanalakshmis0310
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxRamakrishna Reddy Bijjam
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...ZurliaSoop
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxcallscotland1987
 

Recently uploaded (20)

UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdfUGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
UGC NET Paper 1 Mathematical Reasoning & Aptitude.pdf
 
Asian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptxAsian American Pacific Islander Month DDSD 2024.pptx
Asian American Pacific Islander Month DDSD 2024.pptx
 
ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.ICT role in 21st century education and it's challenges.
ICT role in 21st century education and it's challenges.
 
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
2024-NATIONAL-LEARNING-CAMP-AND-OTHER.pptx
 
How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17How to Give a Domain for a Field in Odoo 17
How to Give a Domain for a Field in Odoo 17
 
Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024Mehran University Newsletter Vol-X, Issue-I, 2024
Mehran University Newsletter Vol-X, Issue-I, 2024
 
Grant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy ConsultingGrant Readiness 101 TechSoup and Remy Consulting
Grant Readiness 101 TechSoup and Remy Consulting
 
Activity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdfActivity 01 - Artificial Culture (1).pdf
Activity 01 - Artificial Culture (1).pdf
 
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...Kodo Millet  PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
Kodo Millet PPT made by Ghanshyam bairwa college of Agriculture kumher bhara...
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
Food safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdfFood safety_Challenges food safety laboratories_.pdf
Food safety_Challenges food safety laboratories_.pdf
 
1029-Danh muc Sach Giao Khoa khoi 6.pdf
1029-Danh muc Sach Giao Khoa khoi  6.pdf1029-Danh muc Sach Giao Khoa khoi  6.pdf
1029-Danh muc Sach Giao Khoa khoi 6.pdf
 
This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.This PowerPoint helps students to consider the concept of infinity.
This PowerPoint helps students to consider the concept of infinity.
 
Holdier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdfHoldier Curriculum Vitae (April 2024).pdf
Holdier Curriculum Vitae (April 2024).pdf
 
ICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptxICT Role in 21st Century Education & its Challenges.pptx
ICT Role in 21st Century Education & its Challenges.pptx
 
Magic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptxMagic bus Group work1and 2 (Team 3).pptx
Magic bus Group work1and 2 (Team 3).pptx
 
Spatium Project Simulation student brief
Spatium Project Simulation student briefSpatium Project Simulation student brief
Spatium Project Simulation student brief
 
Python Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docxPython Notes for mca i year students osmania university.docx
Python Notes for mca i year students osmania university.docx
 
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
Jual Obat Aborsi Hongkong ( Asli No.1 ) 085657271886 Obat Penggugur Kandungan...
 
Dyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptxDyslexia AI Workshop for Slideshare.pptx
Dyslexia AI Workshop for Slideshare.pptx
 

Oop in php_tutorial

  • 1. 
 ! ! ! Learn Object Oriented Programming (OOP) in PHP ! ! ! ! ! ! ! ! ! ! !
  • 2. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP Preamble The hardest thing to learn (and teach btw,) in object oriented PHP … is the basics. But once you get them under-your-belt, the rest will come much, much easier. But don't be discouraged! You just found the easiest to understand tutorial out there on OOP and PHP. It may sound like a boastful claim … I know. But that's what the nerd zeitgeist is saying. … Or so I've been told. Videos As an extra bonus, I've created a few video tutorials for you. They cover the same material as the written article and are designed to reinforce the article. • Introduction to Object Oriented PHP (4:05) • Why learn Object Oriented PHP (14:46) • Objects and Classes in PHP (5:26) • Build Objects in PHP - Part 1 (9:14) • Build Objects in PHP - Part 2 (9:41) • Build Objects in PHP - Part 3 (6:18) If you have questions/comments, you can contact me at: stefan@killersites.com ! ! ! ! © 1996 - 2013 www.killerphp.com
  • 3. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP Learn Object Oriented Programming (OOP) in PHP Object-Oriented Programming (OOP) is a type of programming added to php5 that makes building complex, modular and reusable web applications that much easier. With the release of php5, php programmers finally had the power to code with the 'big boys'. Like Java and C#, php finally has a complete OOP infrastructure. In this tutorial, you will be guided (step-by-step) through the process of building and working with objects using php's built-in OOP capabilities. At the same time you will learn: • The difference between building a php application the old fashioned (procedural) way, versus the OOP way. • What the basic OOP principles are, and how to use them in PHP. • When you would want to use OOP in your PHP scripts. People run into confusion when programming because of some lack of understanding of the basics. With this in mind, we are going to slowly go over key OOP principles while creating our own PHP objects. With this knowledge, you will be able to explore OOP further. For this tutorial, you should understand a few PHP basics: functions, variables, conditionals and loops. To make things easy, the tutorial is divided into 23 steps. ! ! ! ! ! © 1996 - 2013 www.killerphp.com
  • 4. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP STEP 1: First thing we need to do is create two PHP pages: • index.php • class_lib.php OOP is all about creating modular code, so our object oriented PHP code will be contained in dedicated files that we will then insert into our normal PHP page using php 'includes'. In this case all our OO PHP code will be in the PHP file: • class_lib.php OOP revolves around a construct called a 'class'. Classes are the cookie-cutters / templates that are used to define objects. ! STEP 2: Create a PHP class Instead of having a bunch of functions, variables and code floating around willy- nilly, to design your php scripts or code libraries the OOP way, you'll need to define/ create your own classes. You define your own class by starting with the keyword 'class' followed by the name you want to give your new class. 1. <?php! 2. class person {! 3. ! 4. }! ! ! ! © 1996 - 2013 www.killerphp.com
  • 5. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP STEP 3: Add data to your class Classes are the blueprints for php objects - more on that later. One of the big differences between functions and classes is that a class contains both data (variables) and functions that form a package called an: 'object'. When you create a variable inside a class, it is called a 'property'. 1. <?php! 2. class person {! 3. var $name;! 4. }! Note: The data/variables inside a class (ex: var name;) are called 'properties'. ! STEP 4: Add functions/methods to your class In the same way that variables get a different name when created inside a class (they are called: properties,) functions also referred to (by nerds) by a different name when created inside a class - they are called 'methods'. A classes' methods are used to manipulate its' own data / properties. 1. <?php! 2. class person {! 3. var $name;! 4. ! 5. function set_name($new_name) {! ! 6. !! $this->name = $new_name;! ! ! 7. !}! ! 8. !! 9. !function get_name() {! 10. !! return $this->name;! ! © 1996 - 2013 www.killerphp.com
  • 6. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 11. !}! 12. }! Note: Don't forget that in a class, variables are called 'properties'. ! STEP 5: Getter and setter functions We've created two interesting functions/methods: get_name() and set_name(). These methods follow a common OOP convention that you see in many languages (including Java and Ruby) - where you create methods to 'set' and 'get' properties in a class. Another convention (a naming convention,) is that getter and setter names should match the property names. 1. <?php! 2. class person {! 3. var $name;! 4. ! 5. function set_name($new_name) {! ! 6. !! $this->name = $new_name;! ! ! 7. !}! ! 8. !! 9. !function get_name() {! 10. !! return $this->name;! ! 11. !}! 12. }! Note: Notice that the getter and setter names, match the associated property name. © 1996 - 2013 www.killerphp.com
  • 7. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP This way, when other PHP programmers want to use your objects, they will know that if you have a method/function called 'set_name()', there will be a property/ variable called 'name'. ! STEP 6: The '$this' variable You probably noticed this line of code: $this->name = $new_name The $this is a built-in variable (built into all objects) which points to the current object. Or in other words, $this is a special self-referencing variable. You use $this to access properties and to call other methods of the current class. 1. function get_name() {! 2. !return $this->name;! ! 3. }! Note: This may be a bit confusing for some of you … that's because you are seeing for the first time, one of those built in OO capabilities (built into PHP5 itself) that automatically does stuff for us. For now, just think of $this as a special OO PHP keyword. When PHP comes across $this, the PHP engine knows what to do. … Hopefully soon, you will too! ! STEP 7: Include your class in your main PHP page You would never create your PHP classes directly inside your main php pages - that would help defeat the purposes of object oriented PHP in the first place! Instead, it is always best practice to create separate php pages that only contain your classes. Then you would access your php objects/classes by including them in your main php pages with either a php 'include' or 'require'. ! © 1996 - 2013 www.killerphp.com
  • 8. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 1. <!DOCTYPE html>! 2. <html>! 3. ! 4. <head>! 5. <meta charset="UTF-8">! 6. <title>OOP in PHP</title>! 7. ! 8. <?php include("class_lib.php"); ?>! 9. ! 10. </head>! 11. ! 12. <body>! 13. </body>! 14. ! 15. </html>! Note: Notice how we haven't done anything with our class yet. We will do that next. ! STEP 8: Instantiate/create your object Classes are the blueprints/templates of php objects. Classes don't actually become objects until you do something called: instantiation. When you instantiate a class, you create an instance of it, thus creating the object. In other words, instantiation is the process of creating an instance of an object in memory. What memory? The server's memory of course! 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! © 1996 - 2013 www.killerphp.com
  • 9. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 5. <?php! 6. $stefan = new person();! 7. ?>! 8. ! 9. </body>! 10. </html>! Note: The variable $stefan becomes a handle/reference to our newly created person object. I call $stefan a 'handle', because we will use $stefan to control and use the person object. If you run the PHP code now, you will not see anything displayed on your pages. The reason for this, is because we have not told PHP to do anything with the object we just created … ! STEP 9: The 'new' keyword To create an object out of a class, you need to use the 'new' keyword. When creating/instantiating a class, you can optionally add brackets to the class name, as I did in the example below. To be clear, you can see in the code below how I can create multiple objects from the same class. … From the PHP's engine point of view, each object is its' own entity. Does that make sense? 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. $stefan = new person();! 7. $jimmy = new person();! © 1996 - 2013 www.killerphp.com
  • 10. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 8. ?>! 9. </body>! 10. </html>! Note: When creating an object, be sure not to quote the class name. For example: $stefan = new 'person'; … will get you an error. ! STEP 10: Set an objects properties Now that we've created/instantiated our two separate 'person' objects, we can set their properties using the methods (the setters) we created. Please keep in mind that though both our person objects ($stefan and $nick) are based on the same 'person' class, as far as php is concerned, they are totally different objects. 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. $stefan = new person();! 7. $jimmy = new person();! 8. ! 9. $stefan->set_name("Stefan Mischook");! 10. $jimmy->set_name("Nick Waddles");! 11. ?>! 12. ! 13. </body>! 14. </html>! ! © 1996 - 2013 www.killerphp.com
  • 11. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP STEP 11: Accessing an object's data Now we use the getter methods to access the data held in our objects … this is the same data we inserted into our objects using the setter methods. When accessing methods and properties of a class, you use the arrow (->) operator. 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. $stefan = new person();! 7. $jimmy = new person();! 8. ! 9. $stefan->set_name("Stefan Mischook");! 10. $jimmy->set_name("Nick Waddles");! 11. ! 12. echo "Stefan's full name: " . $stefan->get_name();! 13. echo "Nick's full name: " . $jimmy->get_name();! 14. ?>! 15. </body>! 16. </html>! Note: The arrow operator (->) is not the same operator used with associative arrays: =>. Congratulations, you've made it half way through the tutorial! Time to take a little break and have some tea … OK, maybe some beer. In a short period of time, you've: ! © 1996 - 2013 www.killerphp.com
  • 12. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP • Designed a PHP class. • Generate/created a couple of objects based on your class. • Inserted data into your objects. • Retrieved data from your objects. … Not bad for your first day on the OO PHP job. If you haven't already, now is a great time to write out the code and watch it in action in your own PHP pages. ! STEP 12: Directly accessing properties - don't do it! You don't have to use methods to access objects properties; you can directly get to them using the arrow operator (->) and the name of the variable. For example: with the property $name (in object $stefan,) you could get its' value like so: $stefan->name. Though doable, it is considered bad practice to do it because it can lead to trouble down the road. You should use getter methods instead - more on that later. 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. $stefan = new person();! 7. $jimmy = new person();! 8. ! 9. $stefan->set_name("Stefan Mischook");! 10. $jimmy->set_name("Nick Waddles");! © 1996 - 2013 www.killerphp.com
  • 13. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 11. ! 12. // directly accessing properties in a class is a no-no.! 13. echo "Stefan's full name: " . $stefan->name;! 14. ?>! 15. </body>! 16. </html>! ! STEP 13: Constructors All objects can have a special built-in method called a 'constructor'. Constructors allow you to initialize your object's properties (translation: give your properties values,) when you instantiate (create) an object. Note: If you create a __construct() function (it is your choice,) PHP will automatically call the __construct() method/function when you create an object from your class. The 'construct' method starts with two underscores (__) and the word 'construct'. You 'feed' the constructor method by providing a list of arguments (like a function) after the class name. 1. <?php! 2. class person {! 3. var $name;! 4. ! 5. function __construct($persons_name) {! 6. $this->name = $persons_name;! 7. }! 8. !! 9. function set_name($new_name) {! ! 10. $this->name = $new_name;! ! ! 11. }!! © 1996 - 2013 www.killerphp.com
  • 14. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 12. !! 13. function get_name() {! ! ! 14. return $this->name;! 15. }! 16. } ! 17. ?>! ! For the rest of this tutorial, I'm going to stop reminding you that: • Functions = methods • Variables = properties … Since this is an OO PHP tutorial I will now use the OO terminology. ! STEP 14: Create an object with a constructor Now that we've created a constructor method, we can provide a value for the $name property when we create our person objects. For example: $stefan = new person("Stefan Mischook"); This saves us from having to call the set_name() method reducing the amount of code. Constructors are common and are used often in PHP, Java etc. 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. $stefan = new person("Stefan Mischook");! 7. echo "Stefan's full name: " . $stefan->get_name();! © 1996 - 2013 www.killerphp.com
  • 15. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 8. ?>! 9. </body>! 10. </html>! This is just a tiny example of how the mechanisms built into OO PHP can save you time and reduce the amount of code you need to write. Less code means less bugs. ! STEP 15: Restricting access to properties using 'access modifiers' One of the fundamental principles in OOP is 'encapsulation'. The idea is that you create cleaner better code, if you restrict access to the data structures (properties) in your objects. You restrict access to class properties using something called 'access modifiers'. There are 3 access modifiers: • public • private • protected Public is the default modifier. 1. <?php! 2. class person {! 3. var $name;! 4. public $height;! 5. protected $social_insurance;! 6. private $pinn_number;! 7. ! 8. function __construct($persons_name) {! 9. $this->name = $persons_name;! 10. }! © 1996 - 2013 www.killerphp.com
  • 16. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 11. !! 12. function set_name($new_name) {! ! 13. $this->name = $new_name;! ! ! 14. }!! 15. !! 16. function get_name() {! ! ! 17. return $this->name;! 18. }! 19. } ! 20. ?>! Note: When you declare a property with the 'var' keyword, it is considered 'public'. ! STEP 16: Restricting access to properties: Part 2 When you declare a property as 'private', only the same class can access the property. When a property is declared 'protected', only the same class and classes derived from that class can access the property - this has to do with inheritance …more on that later. Properties declared as 'public' have no access restrictions, meaning anyone can access them. To help you understand this (probably) foggy aspect of OOP, try out the following code and watch how PHP reacts. Tip: read the comments in the code for more information: 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! © 1996 - 2013 www.killerphp.com
  • 17. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 5. <?php! 6. $stefan = new person("Stefan Mischook");! ! 7. ! 8. echo "Stefan's full name: " . $stefan->get_name();! 9. ! 10. /*! 11. Since $pinn_number was declared private, this line of code ! 12. will generate an error. Try it out! ! 13. */! 14. ! 15. echo "Tell me private stuff: " . $stefan->$pinn_number;! 16. ?>! 17. </body>! 18. </html>! ! STEP 17: Restricting access to methods Like properties, you can control access to methods using one of the three access modifiers: • public • protected • private Why do we have access modifiers? The reason for access modifiers comes down to control: it is makes sense to control how people use classes. ! © 1996 - 2013 www.killerphp.com
  • 18. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP The reasons for access modifiers and other OO constructs, can get tricky to understand … since we are just beginners here. So give yourself a chance! That said, I think we can summarize and say that many OOP constructs exist, with idea the many programmers may be working on a project … 1. <?php! 2. class person {! 3. var $name;! 4. public $height;! 5. protected $social_insurance;! 6. private $pinn_number;! 7. ! 8. function __construct($persons_name) {! 9. $this->name = $persons_name;! 10. }! 11. ! 12. private function get_pinn_number() {! 13. return $this->$pinn_number;! 14. !}! 15. } ! 16. ?>! Note: Since the method get_pinn_number() is 'private', the only place you can use this method is in the same class - typically in another method. If you wanted to call/ use this method directly in your PHP pages, you would need to declare it 'public'. Nerd Note: Again, it is important (as we go along,) that you actually try the code yourself. It makes a HUGE difference! ! ! © 1996 - 2013 www.killerphp.com
  • 19. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP STEP 18: Reusing code the OOP way: inheritance Reusing code the OOP way: inheritance Inheritance is a fundamental capability/construct in OOP where you can use one class, as the base/basis for another class … or many other classes. Why do it? Doing this allows you to efficiently reuse the code found in your base class. Say, you wanted to create a new 'employee' class … since we can say that 'employee' is a type/kind of 'person', they will share common properties and methods. … Making some sense? In this type of situation, inheritance can make your code lighter … because you are reusing the same code in two different classes. But unlike 'old-school' PHP: • You only have to type the code out once. • The actual code being reused, can be reused in many (unlimited) classes but it is only typed out in one place … conceptually, this is sort-of like PHP includes(). Take a look at the sample code: 1. <?php! 2. // 'extends' is the keyword that enables inheritance! 3. ! 4. class employee extends person {! 5. function __construct($employee_name) {! 6. ! 7. }! 8. } ! 9. ?>! © 1996 - 2013 www.killerphp.com
  • 20. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP STEP 19: Reusing code with inheritance: Part 2 Because the class 'employee' is based on the class 'person', 'employee' automatically has all the public and protected properties and methods of 'person'. Nerd note: Nerds would say that 'employee' is a type of person. The code: 1. <?php! 2. // 'extends' is the keyword that enables inheritance! 3. ! 4. class employee extends person {! 5. function __construct($employee_name) {! 6. $this->set_name($employee_name);! 7. }! 8. } ! 9. ?>! Notice how we are able to use set_name() in 'employee', even though we did not declare that method in the 'employee' class. That's because we already created set_name() in the class 'person'. Nerd Note: the 'person' class is called (by nerds,) the 'base' class or the 'parent' class because it's the class that the 'employee' is based on. This class hierarchy can become important down the road when your projects become more complex. ! STEP 20: Reusing code with inheritance: Part 3 As you can see in the code snippet below, we can call get_name on our 'employee' object, courtesy of 'person'. © 1996 - 2013 www.killerphp.com
  • 21. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP This is a classic example of how OOP can reduce the number of lines of code (don't have to write the same methods twice) while still keeping your code modular and much easier to maintain. 1. <?php include("class_lib.php"); ?>! 2. </head>! 3. ! 4. <body>! 5. <?php! 6. // Using our PHP objects in our PHP pages.! 7. $stefan = new person("Stefan Mischook");! 8. echo "Stefan's full name: " . $stefan->get_name();! 9. ! 10. $james = new employee("Johnny Fingers");! 11. echo "---> " . $james->get_name();! 12. ! 13. ?>! 14. </body>! 15. </html>! ! STEP 21: Overriding methods Sometimes (when using inheritance,) you may need to change how a method works from the base class. For example, let's say set_name() method in the 'employee' class, had to do something different than what it does in the 'person' class. You 'override' the 'person' classes version of set_name(), by declaring the same method in 'employee'. ! © 1996 - 2013 www.killerphp.com
  • 22. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 1. <?php! 2. // explicitly adding class properties are optional - but is good ! 3. // practice! 4. ! 5. class person {! 6. var $name;! 7. ! 8. function __construct($persons_name) {! 9. $this->name = $persons_name;! 10. }! 11. !! 12. function get_name() {! ! ! 13. return $this->name;! 14. }! 15. ! 16. // protected methods and properties restrict access to those ! 17. // elements! 18. ! 19. !protected function set_name($new_name) {! 20. !! if ($this->name != "Jimmy Two Guns") {! 21. !! $this->name = strtoupper($new_name);! 22. !! }! 23. !}! 24. } ! 25. ! 26. // 'extends' is the keyword that enables inheritance! 27. class employee extends person {! 28. ! © 1996 - 2013 www.killerphp.com
  • 23. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 29. !protected function set_name($new_name) {! 30. !! if ($new_name == "Stefan Lamp") {! 31. !! ! $this->name = $new_name;! 32. !! }! 33. !}! 34. !! 35. !function __construct($employee_name) {! 36. !! $this->set_name($employee_name);! 37. !}! 38. }! 39. ?>! Notice how set_name() is different in the 'employee' class from the version found in the parent class: 'person'. ! STEP 22: Overriding methods: Part 2 Sometimes you may need to access your base class's version of a method you overrode in the derived (sometimes called 'child') class. In our example, we overrode the set_name() method in the 'employee' class. Now I've now used this code: person::set_name($new_name); … to access the parent class' (person) version of the set_name() method. 1. <?php! 2. // explicitly adding class properties are optional - but is good ! 3. // practice! 4. ! 5. class person {! © 1996 - 2013 www.killerphp.com
  • 24. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 6. var $name;! 7. ! 8. function __construct($persons_name) {! 9. $this->name = $persons_name;! 10. }! 11. !! 12. public function get_name() {!! ! 13. return $this->name;! 14. }! 15. ! 16. // protected methods and properties restrict access to those ! 17. // elements! 18. ! 19. !protected function set_name($new_name) {! 20. !! if (name != "Jimmy Two Guns") {! 21. !! $this->name = strtoupper($new_name);! 22. !! }! 23. !}! 24. } ! 25. ! 26. // 'extends' is the keyword that enables inheritance! 27. class employee extends person {! 28. ! 29. !protected function set_name($new_name) {! 30. !! if ($new_name == "Stefan Lamp") {! 31. !! ! $this->name = $new_name;! 32. !! }! 33. else if($new_name == "Johnny Fingers") {! © 1996 - 2013 www.killerphp.com
  • 25. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 34. !! ! person::set_name($new_name);! 35. !! }! 36. !}! 37. !! 38. !function __construct($employee_name) {! 39. !! $this->set_name($employee_name);! 40. !}! 41. }! 42. ?>! ! STEP 23: Overriding methods: Part 3 Using :: allows you to specifically name the class where you want PHP to search for a method - 'person::set_name()' tells PHP to search for set_name() in the 'person' class. There is also a shortcut if you just want refer to current class's parent: by using the 'parent' keyword. 1. <?php! 2. // explicitly adding class properties are optional - but is good ! 3. // practice! 4. ! 5. class person {! 6. var $name;! 7. ! 8. function __construct($persons_name) {! 9. $this->name = $persons_name;! 10. }! 11. !! © 1996 - 2013 www.killerphp.com
  • 26. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 12. function get_name() {! ! ! 13. return $this->name;! 14. }! 15. ! 16. // protected methods and properties restrict access to those ! 17. // elements! 18. ! 19. !protected function set_name($new_name) {! 20. !! if (name != "Jimmy Two Guns") {! 21. !! $this->name = strtoupper($new_name);! 22. !! }! 23. !}! 24. } ! 25. ! 26. // 'extends' is the keyword that enables inheritance! 27. class employee extends person {! 28. ! 29. !protected function set_name($new_name) {! 30. !! if ($new_name == "Stefan Lamp") {! 31. !! ! $this->name = $new_name;! 32. !! }! 33. else if($new_name == "Johnny Fingers") {! 34. !! ! parent::set_name($new_name);! 35. !! }! 36. !}! 37. !! 38. !function __construct($employee_name) {! 39. !! $this->set_name($employee_name);! © 1996 - 2013 www.killerphp.com
  • 27. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP 40. !}! 41. }! 42. ?>! ! Final Comments We've only touched on the basics of OO PHP. But you should have enough information to feel comfortable moving forward. Remember that the best way to really have this stuff sink in, is by actually writing code for fun. I would suggest creating say 10 simple objects that do simple things, and then use those objects in actual PHP pages. Once you've done that, you will feel very comfortable with objects. Why learn OOP in PHP - another take. For people new to OOP and are comfortable with 'classic' procedural php, you may be wondering why should you even bother to learn object oriented concepts … why go through the trouble? The PHP world: PHP is moving in an OOP direction. For example, many important PHP extensions like PEAR and Smarty are OO based. So, to really understand and use these frameworks properly, you need to understand object oriented PHP. The functional/practical advantages: For smaller projects, using object oriented PHP may be overkill. That said, object oriented PHP really begins to shine as the project becomes more complex, and when you have more than one person doing the programming. ! © 1996 - 2013 www.killerphp.com
  • 28. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP For example: If you find that you have say 10-20 or more functions and you find that some of the functions are doing similar things … it is time to consider packaging things up into objects and using OOP. OOP and your career as a programmer: OOP is the modern way of software development and all the major languages (Java, PERL, PHP, C#, Ruby) use this method of programming. As a software developer/ programmer, it only makes sense (in terms of career,) to keep your skills up-to-date. Besides making you a more valuable PHP coder, understanding OOP in PHP will give you knowledge (OOP knowledge,) that you will be able to take with you into other languages. … When you learn OOP in PHP, you'll learn object oriented programming for any OO based language. You will find with time that creating OOP based PHP projects, will just make your life as a programmer much easier. As an added bonus, soon you will develop your own collection of reusable objects, which you will be able to leverage in other projects. Finally, You will also find that OOP based PHP is much easier to maintain and update. OOP Challenges: OO PHP does present some challenges when you first start out because you'll need to learn to think about your PHP projects in a different way: you will need to conceptualise the project in terms of objects. More details … One common way of starting an object-oriented project is to start by drawing up simple diagrams of your objects. As you begin to work with object diagrams, you will find that they help make developing OOP based PHP projects much easier. Here are a few tips about drawing object-diagrams: © 1996 - 2013 www.killerphp.com
  • 29. LEARN OBJECT ORIENTED PROGRAMMING (OOP) IN PHP • Use a paper and pencil • Draw boxes to represent each object • In those boxes, list your methods and your properties • Use arrows and lines between boxes to denote relationships (parent - child) between objects. So if you have been sitting on the fence waiting to jump into OO PHP, now is as good time as any to get started. ! Stefan Mischook www.killerphp.com www.killersites.com © 1996 - 2013 www.killerphp.com