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


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....