Object-Oriented PHP for Beginners
Drupalers
WORKSHOP
James Candan /jɑnˈdən/
6 years PHP
4 years Drupal
Object-Oriented PHP for Beginners | Tuts+
DEC 23, 2011 / JASON LENGSTORF
http://code.tutsplus.com/tutorials/object-oriented-php-for-beginners--net-12762
@fpvraceways
Agenda
- High level Review OOP concepts
- Setup a remote Drupal instance
- Quickly create a Drupal Migration module
- Write hands-on code to grasp OOP concepts with a practical example
<?php
// Variables
$fruit = "apple";
- Variables
- Functions
- Arrays/Loops
- Logic
<?php
// Variables
$fruit = "apple";
// Logic operators
if ( $fruit == "apple" ) {
// can include html in string output
echo "sweeeeeet!<br />";
}
// Arrays
$colors = array("blue", "purple", 'red');
// Loops
foreach ($colors as $color) {
echo $color . "<br />";
}
<?php
// Variables
$fruit = "apple";
// Logic operators
if ( $fruit == "apple" ) {
// can include html in string output
echo "sweeeeeet!<br />";
}
<?php
// Variables
$fruit = "apple";
// Logic operators
if ( $fruit == "apple" ) {
// can include html in string output
echo "sweeeeeet!<br />";
}
// Arrays
$colors = array("blue", "purple", 'red');
// Loops
foreach ($colors as $color) {
echo $color . "<br />";
}
// Functions
function color_exists($needle, $haystack) {
return in_array($needle, $haystack);
}
// assign returned output to variable
$is_brown_good = color_exists("brown", $colors);
Prerequisites
Recognizing the Differences Between Objects and Classes
- Classes are like blue prints
- Objects are the actual Houses
Properties
Height
Methods
Come
Property values
Color: Gray
Eye Color: Brown
Height: 18"
Length: 36"
Weight: 30 lbs
Methods
Sit
Lay Down
Shake
Come
Create Instance
Object-Oriented Thinking
JULY 16, 2014 / RODRIGO ARAÚJO
http://www.universocomputacao.com/object-oriented-thinking/
Class
Object
Length
Weight
Eye Color
Color
Shake
Lay Down
Sit
Maximus
class RegularPolygon
{
protected $num_sides;
private $radius = 1;
public function __construct($num_sides) {
$this->num_sides = $num_sides;
}
public function set_radius($radius) {
$this->radius = $radius;
}
public function get_angle() {
$sides = $this->num_sides;
return ($sides - 2) * 180 / $sides;
}
public function get_side_length() {
$radius = $this->radius;
$sides = $this->num_sides;
return 2*$radius*sin($M_PI/$sides);
}
public function get_apothem() {
$radius = $this->radius;
$sides = $this->num_sides;
return $radius*cos($M_PI/$sides);
}
}
$hexagon = new RegularPolygon(6);
echo $hexagon->get_angle(); // --> 120
class Rectangle extends RegularPolygon
{
protected $length;
protected $width;
public function __construct($width, $length){
$this->num_sides = 4;
$this->length = length;
$this->width = width;
}
}
class Square extends Rectangle
{
public function __construct($width) {
$this->length = width;
$this->width = width;
}
}
$my_square = new Square();
echo $my_square->get_angle(); // --> 90
$my_hexagon = new RegularPolygon(6);
echo $my_square->get_angle(); // --> 120
Public, Protected, & Private
<?php
class Person
{
private name;
private mobility;
public function get_name() {
return $this->name;
}
public function set_name($name) {
$this->name = $name;
}
public function get_name() {
return $this->name;
}
protected function set_mobility($mobility) {
$this->mobility = $mobility;
}
}
<?php
class Toddler extends Person{
public function __construct($width, $length){
$this->mobility = 'crawling'; // <-- NOT OK.
$this->set_mobility('crawling');
}
}
$my_person = new Toddler();
// can access public elements
$my_person->set_name("Charlie");
// but accessing protected elements would be fatal
echo $my_person->mobility; // --> fatal error
?>
Summary
- Classes are blueprints
- Objects are actual houses
- Classes can have Parent - Child Inheritance via "extends"
- Visibility
- Public - can be seen from anywhere
- Protected - can be seen from Class & Subclass
- Private - can ONLY be seen from within Class
- Static - Doesn't require instantiating (Utilities)
Questions?
OOP PHP Workshop
By James Candan
OOP PHP Workshop
- 1,671