No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Declaraciones de tipo devolución

24/25
Recursos

Aportes 9

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Declaraciones de tipo devolucion

De la misma forma que podemos declarar que tipo de dato queremos recibir, tambien podemos declarar que tipo de dato va a devolver nuestra funcion. Esto le da la certeza a cualquier persona que la implemente de que está trabajando con el tipo de dato que realmente necesita

Este comportamiento, por defecto, es de tipo coecirtivo (opcional), pero podemos hacer que sea obligatorio poniendo la palabra reservada “declare” al inicio de nuestro script (Tando como escalares como devolucion serán obligatorias, no se puede uno cada uno), en este caso, declaramos que la devolucion tiene que ser de tipo int ($n2) : int, despues de los dos puntos)

function suma(int $n1, int $n2) : int {
    return $n1 + $n2;
}

Debería haber una versión de PHP que obligue a usar este tipado de datos, siempre leo código de terceros y se me revuelve el estomago :'v , tengo una obsesión por tipar parámetros y retornos

<?php

class Dummy
{
    public $un_valor = "Cualquier cosa";
}

function suma(Dummy $dummy): string
{
    return $dummy->un_valor;
}

echo suma(new Dummy) . PHP_EOL;

Excelente

```txt class Persona { $nombre; $edad; $genero; public function __construct(string $nombre, int $edad, string $genero) { $this->nombre = $nombre; $this->edad = $edad; $this->genero = $genero; } public function getNombre(): string { return $this->nombre; } public function getEdad(): int { return $this->edad; } public function getGenero(): string { return $this->genero; } public function setNombre(string $nombre): void { $this->nombre = $nombre; } public function setEdad(int $edad): void { $this->edad = $edad; } public function setGenero(string $genero): void { $this->genero = $genero; } } $persona = new Persona("Juan", 24, "Masculino"); echo $persona->getNombre(); // Imprime "Juan" echo $persona->getEdad(); // Imprime 24 echo $persona->getGenero(); // Imprime "Masculino" ```class Persona { $nombre; $edad; $genero; public function \_\_construct(string $nombre, int $edad, string $genero) { $this->nombre = $nombre; $this->edad = $edad; $this->genero = $genero; } public function getNombre(): string { return $this->nombre; } public function getEdad(): int { return $this->edad; } public function getGenero(): string { return $this->genero; } public function setNombre(string $nombre): void { $this->nombre = $nombre; } public function setEdad(int $edad): void { $this->edad = $edad; } public function setGenero(string $genero): void { $this->genero = $genero; } } $persona = new Persona("Juan", 24, "Masculino"); echo $persona->getNombre(); // Imprime "Juan" echo $persona->getEdad(); // Imprime 24 echo $persona->getGenero(); // Imprime "Masculino"
```js class Persona { $nombre; $edad; $genero; public function __construct(string $nombre, int $edad, string $genero) { $this->nombre = $nombre; $this->edad = $edad; $this->genero = $genero; } public function getNombre(): string { return $this->nombre; } public function getEdad(): int { return $this->edad; } public function getGenero(): string { return $this->genero; } public function setNombre(string $nombre): void { $this->nombre = $nombre; } public function setEdad(int $edad): void { $this->edad = $edad; } public function setGenero(string $genero): void { $this->genero = $genero; } } $persona = new Persona("Juan", 24, "Masculino"); echo $persona->getNombre(); // Imprime "Juan" echo $persona->getEdad(); // Imprime 24 echo $persona->getGenero(); // Imprime "Masculino" ```class Persona { $nombre; $edad; $genero; public function \_\_construct(string $nombre, int $edad, string $genero) { $this->nombre = $nombre; $this->edad = $edad; $this->genero = $genero; } public function getNombre(): string { return $this->nombre; } public function getEdad(): int { return $this->edad; } public function getGenero(): string { return $this->genero; } public function setNombre(string $nombre): void { $this->nombre = $nombre; } public function setEdad(int $edad): void { $this->edad = $edad; } public function setGenero(string $genero): void { $this->genero = $genero; } } $persona = new Persona("Juan", 24, "Masculino"); echo $persona->getNombre(); // Imprime "Juan" echo $persona->getEdad(); // Imprime 24 echo $persona->getGenero(); // Imprime "Masculino"

En pocas palabras

declare(strict_types=1);
function calcular_area_triangulo(int $base, int $altura, string $nombre) {
    return "Hola $nombre, el área de tu triángulo es: " . ($base * $altura) / 2 . "\n";
}

Ya no funciona con

echo calcular_area_triangulo("10","20", "Mr. Michi");

Pero si quitamos declare(strict_types=1); si es posible

Declaración de tipo devolución de forma obligatoria

<?php
declare(strict_types=1);

function calcular_area_triangulo(int $base, int $altura) : float
{
	return ($base * $altura) / 2;
}

echo calcular_area_triangulo(7,5);

echo "\n";

lo unico que me preocupa es que puede pasar que tengas librerias de las que heredas codigo y que cuando actualices cambien sus funciones ahora con declaraciones de tipo devolucion y tengo que actualizar mis funciones hijas para que tambien tengan esa declaracion de tipo devolucion o tendre un error :'v