PHP OOP - Clases y Objetos
Una clase es una plantilla para objetos y un objeto es una instancia de clase.
caso de programación orientada a objetos
Supongamos que tenemos una clase llamada Fruit. Una fruta puede tener propiedades como nombre, color, peso, etc. Podemos definir variables como $nombre, $color y $peso para contener los valores de estas propiedades.
Cuando se crean los objetos individuales (manzana, plátano, etc.), heredan todas las propiedades y comportamientos de la clase, pero cada objeto tendrá diferentes valores para las propiedades.
Definir una clase
Una clase se define usando la class
palabra clave, seguida del nombre de la clase y un par de llaves ({}). Todas sus propiedades y métodos van dentro de las llaves:
Sintaxis
<?php
class Fruit {
// code goes here...
}
?>
A continuación, declaramos una clase llamada Fruit que consta de dos propiedades ($name y $color) y dos métodos set_name() y get_name() para establecer y obtener la propiedad $name:
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
?>
Nota: ¡En una clase, las variables se llaman propiedades y las funciones se llaman métodos!
Definir objetos
¡Las clases no son nada sin objetos! Podemos crear múltiples objetos de una clase. Cada objeto tiene todas las propiedades y métodos definidos en la clase, pero tendrán diferentes valores de propiedad.
Los objetos de una clase se crean utilizando la new
palabra clave.
En el siguiente ejemplo, $manzana y $banana son instancias de la clase Fruta:
Ejemplo
<?php
class Fruit {
// Properties
public
$name;
public $color;
// Methods
function
set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
}
$apple = new Fruit();
$banana = new Fruit();
$apple->set_name('Apple');
$banana->set_name('Banana');
echo $apple->get_name();
echo "<br>";
echo $banana->get_name();
?>
En el siguiente ejemplo, agregamos dos métodos más a la clase Fruit, para establecer y obtener la propiedad $color:
Ejemplo
<?php
class Fruit {
// Properties
public $name;
public $color;
// Methods
function set_name($name) {
$this->name = $name;
}
function get_name() {
return $this->name;
}
function set_color($color) {
$this->color = $color;
}
function get_color() {
return $this->color;
}
}
$apple = new Fruit();
$apple->set_name('Apple');
$apple->set_color('Red');
echo "Name: " . $apple->get_name();
echo "<br>";
echo "Color: " . $apple->get_color();
?>
PHP - La palabra clave $this
La palabra clave $this se refiere al objeto actual y solo está disponible dentro de los métodos.
Mira el siguiente ejemplo:
Ejemplo
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
?>
Entonces, ¿dónde podemos cambiar el valor de la propiedad $name? Hay dos maneras:
1. Dentro de la clase (agregando un método set_name() y usando $this):
Ejemplo
<?php
class Fruit {
public $name;
function set_name($name) {
$this->name = $name;
}
}
$apple = new Fruit();
$apple->set_name("Apple");
echo $apple->name;
?>
2. Fuera de la clase (cambiando directamente el valor de la propiedad):
Ejemplo
<?php
class Fruit {
public $name;
}
$apple = new Fruit();
$apple->name = "Apple";
echo $apple->name;
?>
PHP - instancia de
Puede usar la instanceof
palabra clave para verificar si un objeto pertenece a una clase específica:
Ejemplo
<?php
$apple = new Fruit();
var_dump($apple instanceof
Fruit);
?>