Clases y Objetos en PHP

Clases y Objetos en PHP

Las clases nos ayudan a definir una estructura manejable y entendible de nuestro sistema, este termino da vida a los que conocemos como programación orientada a objetos (POO en español, OOP en inglés). La teoría dice, "esto significa que tratas a tu código o partes de él como objetos de la vida real y esto podría resultar muy familiar para nosotros porque nos acerca al mundo tal y como lo conocemos". Aunque parece que esto siempre es confuso.


Para entender, podríamos empezar con nuestra primera clase.

Clases en PHP

Podemos iniciar con código, definiendo un propósito y pensando en que éste archivo represente algo... Digamos a una persona, aunque pudiera ser un libro, fruta, email, etc. Llamaremos a nuestra clase Person.

<?php

/**
* this class represents a person
*/
class Person 
{
    
}
  • Solo para que puedas familiarizarte con la sintaxis, es bastante similar a una función. Todo su bloque o código está entre { llaves }
  • Todo comienza con la palabra reservada class y luego el nombre de la clase que queremos crear, en este caso Person
  • Lo correcto es crear un archivo solo para tu clase con el nombre de la clase, en este caso nuestro archivo se llamaría Person.php

Es una buena práctica nombrar a las clases con la primera letra en mayúsculas, esto se llama CamelCase y es un estilo de escritura que se aplica a frases o palabras compuestas. El nombre se debe a que las mayúsculas a lo largo de una palabra en CamelCase se asemejan a las jorobas de un camello.

De momento no podemos hacer nada con esta clase pero para que vaya tomando forma podemos crear propiedades. El objetivo de una propiedad es añadir características y en cada una de ellas almacenar datos. Ejemplo: Un libro puede tener título, una persona nombre, una fruta puede tener sabor, un email tiene un asunto y texto, y así...

Vamos a trabajar solo con nombre y apellido.

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;
}

Como puedes ver, las propiedades comienzan con la palabra var, en este caso son variables pero las variables de una clase se llaman propiedades. Aquí usaremos var, sin embargo, mas adelante en Rimorsoft conocerás todas las alternativas.

Hasta aquí terminamos con las clases, veamos el siguiente paso:

Instancias

Imagina a una clase como un plano o un molde... A partir de aquí nacen los objetos. Y quiero que solo aprendas esto, instanciar es crear un objeto a partir de una clase, para ello usamos la palabra reservada new. Veamos:

Archivo Person.php

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;
}

Archivo index.php

<?php

require 'Person.php';

$person = new Person;

Crear un objeto o crear una instancia es lo mismo y se logra usando la palabra new, toma en cuenta que esto sucede gracias a que ya contamos con la clase Person. En este ejemplo, nuestro objeto se llama $person... Ya el objeto vive, existe al escribir $person = new Person.

Lo interesante es que ya dentro de $person están disponibles las propiedades y podemos usarlas.

<?php

require 'Person.php';

$person = new Person;
$person->name;

Usar una propiedad solo consiste en hacer uso del operador de objeto ->, que es un guión - seguido por un mayor que > (forma una flechita hacia la derecha). Luego escribimos el nombre de la propiedad que deseamos usar, en este caso name y queda así $person->name;.

NOTA: De momento, al escribir $person->name; no verás nada en el navegador.

Hasta el momento solo sintaxis, aunque intento que sea fácil y ameno, quiero que estés con buena base para los cursos que vienen en el canal.

Método

En una clase, una función común y corriente se le llama método y es donde vamos a colocar nuestro código o lógica. Veamos como se define:

Archivo Person.php

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;
    
    function greet()
    {
        return 'Hola, cómo estás?';
    }
}

Archivo index.php

<?php

require 'Person.php';

$person = new Person;
echo $person->greet();

De nuevo usamos la palabra reservada function, pero en este caso para definir un método. Recuerda: Las funciones en nuestras clases se les llaman métodos, Aquí podemos ver que nuestro método se llama greet() y solo retorna un Hola, cómo estás?.

Al crear un objeto podemos ejecutar al método usando a nuestro operador "flechita" -> (este sirve para acceder a variables, asignar valor y acceder a métodos).

$this

Nuestra clase tiene propiedades y métodos, así que es muy probable que necesitemos acceder a ellas. Y si, están disponibles para nosotros, y podemos acceder a ellas usando al gran $this.

$this es una referencia a la instancia actual, si escribimos $this->name es como decir mi nombre. Su uso es para acceder a propiedades y métodos desde dentro de un método de la clase.

Archivo Person.php

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;
    
    function greet()
    {
        return "Hola, {$this->name} cómo estás?";
    }
}

Archivo index.php

<?php

require 'Person.php';

$person = new Person;
echo $person->greet();

La sección interesante de este apartado es return "Hola, {$this->name} cómo estás?"; de la clase Person, ahí vemos claramente la idea y el propósito de $this… Accedemos a la propiedad name desde el método greet().

En este caso no hay mucho sentido, si ejecutas el código no habrá un nombre impreso en pantalla. Pero avancemos, ya verás un nombre en pantalla.

En el método greet() usamos ahora comillas dobles y es porque en el texto hemos incluido una variable.

Constructor - Método especial __construct()

Un constructor forma parte de una serie de métodos especiales. Este se ejecuta al momento de crear una nueva instancia de la clase (al crear un objeto). Lo interesante es que podemos comenzar nuestro objeto con datos básicos, por ejemplo en Person podemos empezar dando de alta el nombre y apellido justo en el momento de instanciar. En otras palabras, es la gran oportunidad de establecer valores a las propiedades de la clase para que nuestra clase tenga con que trabajar.

Archivo Person.php

<?php

/**
* this class represents a person
*/
class Person 
{
    
    var $name;
    var $lastname;

    public function __construct($name, $lastname)
    {
        $this->name = $name;
        $this->lastname = $lastname;
    }
    
    function greet()
    {
        return "Hola, {$this->name} cómo estás?";
    }
}

Archivo index.php

<?php

require 'Person.php';

$person = new Person('Italo', 'Morales');
echo $person->greet();

Aquí toma en cuenta lo siguiente, usamos el método especial __construct() cuando necesitamos iniciar con algo de datos, ejemplo: La clase email necesita para enviar el mensaje un asunto, un remitente, un destinatario y un texto final... Entonces iniciamos esta clase con estos datos y luego procedemos a enviar el mensaje.

Aquí si veremos un nombre impreso en pantalla, porque lo hemos grabado en la clase justo en el momento en que creamos el objeto $person = new Person('Italo', 'Morales');

Varias instancias, (varios objetos, una clase)

Esto quiere decir, tener varios objetos a partir de una única clase, siguiendo con lo anterior, hablo de dos o mas personas.

Archivo index.php

<?php

require 'Person.php';

$client = new Person('Italo', 'Morales');
echo $client->greet();

$seller = new Person('Luisa', 'Fantone');
echo $seller->greet();

En este caso los objetos se llaman $client y $seller, cada uno es una persona y nacen a partir de la clase Person y eso es reutilización de código, puedes notar que hay una sola clase y dos objetos. ¡Esto es magía!.

Esto es lo que debemos conocer de las clases y objetos.

Resumen

  • Una clase es un molde
  • Un objeto es formado a partir de un molde (una clase)
  • La estructura de una clase es: Inicia con la palabra class, propiedades, constructor y métodos.

El código está en Github de Rimorsoft Regálanos estrellas y está pendiente de los otros post de PHP.

Adquiere en preventa y aprovecha un gran descuento TDD en Laravel

Comparte en

Creado por: Venezuela Italo Morales

Profesor de #Laravel y #PHP en Rimorsoft Online

Más información


Ayuda con datatables

Hola, acudo a ustedes para ver si pueden orientarme resulta que tengo una tabla que obtiene datos agrupados por nombre de empresa, cada empresa tiene locales en renta y se debe obtener el monto que se debe o que ha sido pagado, segun corresponda tengo algo mas o menos así:

$result = DB::table('espacios') ->select('cuenta_por_cobrars.id','clientes.id as ide...

Obtener Datos de un select en otros input

Buenas estoy intentando que al seleccion un producto me pegue luego en unas cajas de texto los datos.

Mi Controlador:

public function lista(){

$productos = Productos::pluck('Codigo','Descripcion','PVP','id')->prepend('selecciona'); return view ('Productos.NuevoProducto2',compact('productos'));

}

Mi vista:

@extends('admin.plantilla')

@section('content'...

Input que depende del valor seleccionado en Select

Buenas amigos, estoy intentando que al picar en el select me sale el listado de productos por ejemplo y quiero poner en un input el precio.

Por el momento consigo tener mi select lleno de datos, pero no consigo que me envie los datos al input.

Alguna idea o ejemplo para orientarme?

gracias...

componentes

hola amigo italo, buen dia... tengo el siguiente inconveniente... quisiera hacer un select con un componente que me cargue los funcionarios de una empresa y colocarlo en varios formularios en diferentes modales. el componente lo hago correctamente y carga los funcionarios; cuando selecciono el funcionario quisiera cargarlo a una variable VUE que esta en mi instancia principal...