No tienes acceso a esta clase

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

Curso de Manejo de Datos en PHP

Curso de Manejo de Datos en PHP

Profesor Italo Morales F

Profesor Italo Morales F

Argumentos

8/16
Recursos

Aportes 41

Preguntas 4

Ordenar por:

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

Para explicar un poco mejor el paso por referencia:

Cuando usamos una función normalmente y pasamos argumentos, lo que se hace es COPIAR el valor de esa variable al argumento que nosotros hayamos definido en la función.

Cuando hacemos uso del paso por referencia, lo que hacemos en ENVIAR la variable como tal, es decir, aquí ya no se hace una copia de esa variable sino que se envía directamente, lo que nos permite modificar su valor libremente desde dentro de la función.

Mis apuntes


<?php
echo "<h1>Argumentos</h1>";

#Valores
//Hace referencia a que nosotros colocamos directamente una variable($name) esperando que eso se cumpla
function greet($name){
	return "<h1>Hola, $name</h1>"; 
}

echo greet('Danny');

#Referencias
//Ademas de hacer un cambio interno con la función queremos que este cambio afecte al elemento que tenemos afuera.
$course = 'PHP';
function path(&$course){
	$course = 'Laravel';
	echo $course; //Laravel
}

path($course);
echo "<br>";
echo $course; //Laravel

echo "<br>";

#Predeterminado
//Asignamos de manera fija un elemento o un valor y podemos alterar el valor con un parametro
function greet1($name = 'Danny'){
	return "Hola, $name";
}

echo greet1();
echo "<br>";
echo greet1('Abel');

Argumentos: Colocamos dentro de los paréntesis, un valor o un parámetro
Referencia Apunta u observa el comportamiento de otro elemento.

valores colocas una variables directamente esperando a que se cumpla.

referencia Además de hacer un cambio interno, también afecte al elemento que este fuera.

Argumentos


Un argumento es lo que colocamos adentro de los paréntesis, este puede ser un valor de forma directa o un parámetro.

Las referencias apunta u observa el comportamiento de otro elemento.

<?php

// valores
function saludo($name)
{
    echo "Hola, $name";
}

saludo('Angél');

// refrencias
$co = 'PHP';
# si queremos que el resultado de la función modifique
# la variable externa, tenemos que poner path(&$co)
function path($co)
{
    $co = 'Laravel';
    echo $co;
}

path($co);
echo $co;

// predeterminado
function saludos($name = 'Pikachu')
{
    echo "Hola, $name";
}

saludos();

Si eres de las personas que ha visto lenguajes como C o C++, esto no será difícil de entender, ya que lo que hace es paso de parámetros por valor y paso de parámetros por referencia. Si quieren una explicación mas detallada y técnica del paso de parámetros por referencia, les recomendaria el curso de POO en C++, . En resumen un paso por valores es que en la función creas una copia del valor y lo trabajas como variable local dentro de la función, por ende el resultado no se afecta a la variable que envias.
Un paso de parámetro por referencia es decirle a la función que no envias una copia sino que envías a la variable para que puedas modificarla ahí dentro, y cuando finalice la función, tengas esa variable modificada. Al principio es difícil entender, pero si aprendes ese concepto en C o C++, lo entenderás mejor.

🔆 Los argumentos de una función pueden ser parámetros o valores.

function greet($name)
{
  echo 'Hola ', $name;
}

forma interesante de entender los ámbitos de las variables!

Excelente explicación. Hace años que uso php y nunca había visto como cambiar el scope de una variable con el &.

para la forma predeterminada ¿se le puede decir que es un valor por default?
A si lo interpreto yo ya que en otros lenguajes que manejo regularmente para mostrar el valor de una variable para que no sea NULO le damos un valor “por default” (así le llamamos en otros lenguajes)
😃

Como dato interesante, esto entró en las preguntas de Conceptos de PHP donde se hablaba de Composer, y quizás por eso no entendía dicha pregunta. Tal vez se haya pasado debido a que se grabaron los cursos muy de seguido, o yo no lo noté

Mi pregunta aca es la siguiente, sale realmente rentable usar ese tipo de funciones? siento que se puede hacer ese codigo de manera mas sencilla, y mucho mas legible que eso.

Mis apuntes:

<?php

//Valores
function greet($name)
{
    return "Hola, $name!";
}

echo greet("Juan") . "<br/>";


//Referencias
$course = 'PHP';
function path($course)
{
    $course = "Laravel";
    echo "<br/> Laravel: $course";
}

path($course);
echo "<br/> Curso: $course";


//Predeterminado 
echo "<h2>Predeterminado</h2>";

function greet2($name = "Juan")
{
    return "Hola, $name";
}

echo greet2(). "<br/>";
echo greet2("Campuzano");

Yo no hice lo del password, pero si hice un helper. que me permite instancia la clase validate de una forma mas bonita diría yo

<?php

if (! function_exists('email') ) 
{
	function email($email)
	{
	 	return App\Validate::email($email);
	}
}

🍃 En el código anterior, la variable $course es declarada fuera de la función path() como “PHP”. Luego, dentro de la función path(), la variable $course es reasignada como “Laravel”.

Cuando se llama a la función path(), se pasa la variable $course como argumento. La función path() reasigna el valor de la variable local $course a “Laravel” y luego lo imprime.

Después de llamar a la función path(), la variable $course fuera de la función todavía tiene su valor original, “PHP”. Por lo tanto, cuando se imprime la variable $course fuera de la función, se muestra “PHP”.

Esto se debe a que la variable $course dentro de la función path() es una variable local y no afecta al valor de la variable $course global fuera de la función. Para hacer que el valor de la variable global $course cambie, puedes usar la palabra clave global dentro de la función path() para hacer referencia a la variable global:

$course = "PHP";

function path() {
  global $course;
  $course = "Laravel";
  echo $course;
}

path();

echo $course;

En este caso, después de llamar a la función path(), la variable global $course cambiará su valor a “Laravel” y ambas llamadas a echo $course imprimirán “Laravel”.

  • Un argumento es lo que colocamos dentro de los paréntesis; este puede ser un valor de manera directa colocando una variable, un parámetro, esperamos algo que sea pasado por allí.

  • También tenemos el concepto de referencia que vimos en el módulo uno que apunta directamente , u observa directamente el comportamiento de otro elemento.

  • También vamos a ver el concepto de parámetro o argumento predeterminado.

Resumen de la clase

<?php
/* function greet($name){
    return "Hello $name";
}

echo greet('World');
 */
//Referencias
$course = 'PHP';
function path(&$course){
    $course = 'Laravel';
    echo $course;
}

path($course);
echo '<br>';
echo $course;
echo '<br>';

function greet($name = 'World'){
    return "Hello $name";
}   

echo greet();
echo '<br>';
echo greet('Abel');


A veces olvidamos cosas tan sencillas como el paso por referencia, que en la vida real complicamos en nuestros trabajos.

¿A poco no les pasa?

8. Argumentos

Argumento es un valor, Referencia es apuntar u observar un valor, y vamos a aprender sobre predeterminado.

Referencias: Al agregar un & antes de la variable, lo que hacemos es pasarla “por referencia”, pasandoun apuntador a la variable, lo que ocasiona que cuandomodificamos la variable dentro de la función, externamentetambién es afectada

Comparto el código de la clase:

<?php
/*
function greet($name)
{
    return "Hola, $name <br>";
}

echo greet('Aldo');
*/

/**
 * Referencias: Al agregar un & antes de la variable,
 * lo que hacemos es pasarla "por referencia", pasando
 * un apuntador a la variable, lo que ocasiona que cuando
 * modificamos la variable dentro de la función, externamente
 * también es afectada
*/

$course = 'PHP';
function path(&$course)
{
    $course = 'Laravel<br>';
    echo $course;
}

path($course);
echo $course; // Laravel

// Predeterminado, valor por defecto

function greet($name = 'Aldo')
{
    return "Hola, $name <br>";
}

echo greet();//Hola Aldo
echo greet('Abel');//Hola Abel

argumentos y parámetros son conceptos diferentes. Por ejemplo, para la siguiente función (o método si se está dentro de una clase) los argumentos vienen siendo las variables que se definen entre los paréntesis ($nombre y $apellido)

function mostrar_nombre($nombre, $apellido) {
  echo "Hola, $nombre $apellido";
}

Mientras que los parámetros corresponden a aquellos valores que se establecen al ejecutar la función ($mi_nombre y 'Gómez')

$mi_nombre = 'César';
mostrar_nombre($mi_nombre, 'Gómez');

Creo que esta clase debería llamarse parámetros mas que argumentos… https://www.geeksforgeeks.org/difference-between-argument-and-parameter-in-c-c-with-examples/

Dejo por aquí el Repositorio en github por si lo necesitan :3

También los argumentos pueden ser pasados vía

  1. Variable-length argument lists

Utilizando el token …$identificador

<?php
function sum(...$numbers) {
    $acc = 0;
    foreach ($numbers as $n) {
        $acc += $n;
    }
    return $acc;
}

echo sum(1, 2, 3, 4);
?>

  1. Named Arguments

Introducidos en PHP 8.0.0 Los argumentos con nombre se pasan anteponiendo el valor al nombre del parámetro seguido de dos puntos. Se permite el uso de palabras clave reservadas como nombres de parámetros. El nombre del parámetro debe ser un identificador


<?php
// argumentos por valor
array_fill(0, 100, 50);

// named arguments:
array_fill(start_index: 0, count: 100, value: 50);
?>

Explicación de variables por referencia.

Yo es que lo veo una muy mala práctica, pero… ¿en qué caso es recomendable pasar variables por referencia?

Muy buena explicación. Easy!

Excelente explicación. Gracias Italo.

Excelente

Asi solo el ejemplo de valores me muestra “Hola $name” pero cuando agrego al final el cierre ?> ahi si recien me carga correcto “Hola Renzo”

Los argumentos son los valores que van dentro de los paréntesis a la hora de llamar una función.

<h4>Valores</h4>

Es la forma más común de pasar argumentos a una función. Simplemente se le pasa el valor deseado y esta ejecuta el código que contiene.

<h4>Referencias</h4>

Si realizamos un cambio al argumento dentro de la función, este solo mantendrá el nuevo valor dentro de dicha función. Si se consulta el valor fuera, será el que tenía antes de llamar a la función.

Para hacer que el valor de fuera de la función también cambie se utiliza el parámetro por referencia, esto hace que a la función se le pase la referencia del valor que está afuera y al modificarlo se mantengan esos cambios fuera de la función.

<h4>Predeterminado</h4>

Para darle un valor predeterminado a un argumento se hace como cualquier asignación a una variable, si al llamar la función no se le da un valor tomará el predeterminado

Pasa de parametros por valor, bueno no hay modificador cuando entra a la función; pero en el paso por referencia si cambia de $x a &$x cuando lo escribirmos en el encabezado de la función.
Y por default, asignamos un valor a la variabel dentro del encabezado de la función.
$x=“Valor por defecto”

Explicación de datos predeterminados.

buenísimo el Tip en el parametro!

<?php
//referencia
$course="variable";
function sinReferencia($course)
{
    $course ="nuevo nombre";
    echo "en este codigo la variable curso no ha cambiado =  $course     ";

}
function conReferencia(&$course)
{
    $course="nombre nuevo establecido";
    echo "el nombre nombre es = $course   ";

}
sinReferencia($course);
conReferencia($course);
echo $course;

Argumentos de PHP

  1. Valores
  2. Referencia
  3. Predeterminado

Con estas explicaciones ya le voy tomando el gusto a PHP.

Mis anotaciones las complemento con los aportes que dejan los demás, gracias.

// funciones con valores

function greet($name){
    return "hola, $name";
}

echo greet('Jhon')."</br>";

/**
 * Referencia no cambia el valor de la variable ssin hacer el llamado de la funcion
 */

 $course = 'PHP';
 function path($course)
 {
     $course = 'Laravel';
     echo $course."</br>" ;
 }

 path($course)."</BR>";
 echo $course."</br>";

 // modificar valores con & parametro de referencia

 $course = 'PYTHON';
 function path2(&$course)
 {
     $course = 'KOTLIN';
     echo $course."</br>" ;
 }

 path2($course);
 echo $course."</br>";

 /**
  * prederteminado se asigna un valor en la función y luego se puede llamar 
  * y cambiarle su valor.
  */

  function greet2($name = 'Anderson')
  {
      return "Hola compañero, $name </br>";
  }

  echo greet2()."</br>";
  echo greet2('Alonso')."</br>";```
<?php

//Trabajar con valores
function greet($name){
    return"Hola, $name <br>";
}
echo greet('Guillermo Pagan');

//Trabajar con referencias parametro de referencia & con este parametro se cambia el valor de la variable course
$course = 'PHP';
function path(&$course){
    $course = 'Laravel';
    echo "$course <br>";
}

path($course);
echo "$course <br>";

//Trabajar con valores predeterminados
function saludar($name = 'Invitado'){
    return "Hola, $name <br>";
}

Tres tipos de argumentos en PHP
Por valores
Por referencias
y Predeterminado