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


crear un radio button que despliegue msj

hola quisiera saber como puedo crear un radio button que cuando lo seleccione me mande un msj de alerta.

mi codigo es el siguiente

---- en mi vista---- {!! Form::label('oobraexte', 'La Obra es:') !!} {!! Form::radio('oobraexte', 'SI', false, ['class'=>'check', 'id'=>'radio1']) !!} ...

recibir un checkbox en el controlador

como puedo recibir un checkbox en el controlador y si esta seleecionado que haga una accion, y si no esta seleccionado que haga otra?, un saludo y gracias...

Enviar arreglos en un input desde html (blade)

Hola a todos actualemente tengo este fragmento de codigo en html dónde envio informacion de un usuario

<!-- cuando es requerido y de tipo checkbox -->
<div class="form-group">
  <div class="col-md-6">
    <label for="{{$tag->tag_name}}" class="col-md-4 control-label">{{$tag->tag_name}}</label>
    <input type="hidden" class="form-control" value="{{$tag->id}}" n...

Como puedo conectarme a múltiples base de datos con laravel

Hola saludos como puedo conectarme a múltiples base de datos y hacer login con los usuarios de cada una de ellas y acceder a la informacion especifica de cual me encuentro iniciada la sesion

Necesito de sua ayuda y orientacíon sobre el tema muchas gracas....