Parámetros de tipo objeto en PHP

Parámeto del tipo objeto

En Rimorsoft hemos ido descubriendo cómo pasar parámetros y asegurarnos de que los tipos sean correctos. Hemos visto un ejemplo muy interesante en post de funciones anónimas, pero no es lo único que podemos hacer.


Aquí veremos cómo pasar a un objeto un parámetro del tipo objeto.

Le he dado muchas vueltas y creo que conseguí la mejor manera de explicarlo. Vamos a crear tres (3) archivos:

  • Index: Archivo principal, y es el que ejecutamos en el navegador.
  • Post: Un objeto que tiene como fin ocuparse de todo lo relacionado con los posts o articulos del sistema.
  • Author: Es el objeto que representa al dueño del post.

La lógica dice que para crear un Post necesitamos si o si a un Author. Comencemos:

Clase Author

<?php

/**
* this class represents a author
*/
class Author 
{
	
    var $name;
    var $lastname;

    function __construct($name, $lastname)
    {
	$this->name = $name;
	$this->lastname = $lastname;
    }

}

Clase Post

<?php

/**
* this class represents a post
*/
class Post 
{
	
    var $author;
    var $title;
    var $body;

    function __construct(Author $author, $title, $body)
    {
	$this->author = $author;
	$this->title  = $title;
	$this->body   = $body;
    }

}

Importante: Nota como el constructor tiene un parámetro del tipo Author, y el resto son solo string (cadena de texto)... Esto nos dice de inmediato que para crear con éxito un Post, necesitamos contar con el Author.

Archivo index.php

<?php

require 'Post.php';
require 'Author.php';

$author = new Author('Italo', 'Morales');
$post   = new Post($author, 'Clases en PHP', 'Las clases nos ayudan...');

echo "Título: {$post->title} <br>";
echo "Contenido: {$post->body} <br>";
echo "Autor: {$post->author->name} <br>";

echo '<pre>'; // structure the output
var_dump($post); // detail of the post object

Resultado

Al ejecutar este código debemos ver lo siguiente:

Título: Clases en PHP
Contenido: Las clases nos ayudan...
Autor: Italo

object(Post)#2 (3) {
  ["author"]=>
  object(Author)#1 (2) {
    ["name"]=>
    string(5) "Italo"
    ["lastname"]=>
    string(7) "Morales"
  }
  ["title"]=>
  string(13) "Clases en PHP"
  ["body"]=>
  string(24) "Las clases nos ayudan..."
}

Lo interesante es la estructura del objeto, dice claramente que Post es un objeto y que dentro tiene otro objeto llamado Author. Luego vemos los string title y body.

Conceptos

  • Etiqueta pre: Con esta etiqueta logramos ver correctamente el objeto, si no usamos esta etiqueta antes del var_dump($post); veremos todo en una sola línea.
  • Función var_dump: Con esto logramos ver la información de una variable, en este caso me interesa saber que hay dentro de la variable $post. Si escribo echo $post; me dará error porque $post no es un string, es un objeto.

Esto es POO, y la idea es seguir profundizando para convertirte en un gran programador y no en un usuario Laravel. Quiero que veas cualquier cosa fabricada en Laravel y digas ¡Genial, es una clase, hereda de, el parámetro es, y así ....... !

Saber realmente PHP te ayudará a comprender cualquier Framework.

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


El auth de laravel trabaja con $_SESSION?.

el auth de laravel trabaja basado en tokens o con el objeto session de php ...

Rutas de Laravel no funcionan

Buenas a todos, tengo un problema, ultimamente, cada vez que creo un nuevo proyecto de Laravel las rutas de este no funcionan. Por ejemplo: si creo el proyecto, éste se crea, pero al agregarle el sistema de autenticación: "auth" se generan tanto las rutas en el archivo web.php y las vistas. pero si intento acceder a la sección de registro o inicio de sesión me aparece el e...

form request ajax laravel (Mostrar error de validación de formulario con ajax)

Hola, tengo una consulta por hacer. Quisiera conocer sus opiniones, sobre como mostrar los errores de validación con ajax cuando utlizo la clase Form Request. Debo decir que el mensaje de registrado con éxito si lo muestra, sin embargo los mensajes de error no los he podido mostrar. Gracias

//FORM REQUEST


public function rules()
    {
        return [
     ...

Select Dinámico

Hola buenas a todos estoy trabajando en un sistema en el cuál, en un formulario tengo un select para seleccionar datos de una tabla, y en la vista del formulario me funciona ya que me carga todos los datos que tengo almacenados en dicha tabla; pero cuando selecciono una de las opciones, sea cual séa la que seleccione, siempre se guarda el primer registro de la tabla... Es com...