PHP - Que significa el guion bajo en POO ?

 
Vista:
Imágen de perfil de facundo

Que significa el guion bajo en POO ?

Publicado por facundo (185 intervenciones) el 29/07/2017 22:47:19
Hola, estoy estudiando programacion orientada a objetos, tengo una funcion que entiendo perfectamente que hace cada cosa, lo unico que no entiendo es porque en algunos lugares esta el guion bajo y en otros el doble guion bajo
Esta es la funcion
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
class Persona
{
	private $_fechaNacimiento;
	/** * * @param string $fechaNacimiento 5/8/1973 */
	public function __construct($fechaNacimiento)
	{
		$this->_fechaNacimiento = $fechaNacimiento;
	}
	public function decirEdad()
	{
		return $this->_calcularEdad();
	}
	private function _calcularEdad()
	 {
	 	$diaActual = date('j');
	 	$mesActual= date('n');
	 	$añoActual = date('Y');
	 	list($dia, $mes, $año) = explode("/", $this->_fechaNacimiento);
	 	// si el mes es el mismo pero el dia inferior aun 
	 	// no ha cumplido años, le quitaremos un año al actual 
	 	if (($mes == $mesActual) && ($dia > $diaActual)) {
	 		$añoActual = $añoActual - 1;
	 	}
	 	// si el mes es superior al actual tampoco habra 
	 	// cumplido años, por eso le quitamos un año al actual 
	 	if ($mes > $mesActual) {
	 		$añoActual = $añoActual - 1;
	 	}
	 	// ya no habria mas condiciones, ahora simplemente 
	 	// restamos los años y mostramos el resultado como su edad
	  	$edad = $añoActual - $año;
	  	return $edad;
	 }
}
 
$persona = new Persona('30/7/1990');
echo $persona->decirEdad();


Probé sacandole los guiones bajos a function _calcularEdad(), _fechaNacimiento, $_fechaNacimiento, $this->_calcularEdad() y de esa manera la funcion sigue andando bien, pero sigo sin entender que significa el guion bajo.
Probé tambien sacandole el doble guion bajo a public function __construct($fechaNacimiento) y de esta manera la funcion no anda, me tira este error:

Notice: Undefined offset: 1 in C:\xampp\htdocs\prueba.php on line 19
Notice: Undefined offset: 2 in C:\xampp\htdocs\prueba.php on line 19


Por favor si alguien me pudiera explicar brevemente que significan los guiones bajos me vendria muy bien para terminar de entender eso.
Gracias, saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Que significa el guion bajo en POO ?

Publicado por kip (877 intervenciones) el 30/07/2017 02:45:02
Hola, debes primero diferenciar los metodos 'mágicos' propios del lenguaje que en este caso son:

Los nombres de los métodos __construct(), __destruct(), etc .... son mágicos en las clases PHP. No se puede tener métodos con estos nombres en ninguna clase a menos que se desee la funcionalidad mágica asociada a estos.

http://php.net/manual/es/language.oop5.magic.php

Por que llevan estos un doble guion bajo ? Porque es una sintaxis que adoptaron, debes saber que tu también puedes definir una función con '__', pero es recomendado no hacerlo !

Precaución
PHP se reserva todos los nombres de los métodos que comienzan con __ como mágicos. Se recomienda que no utilice los nombres de métodos con __ en PHP a menos que desee alguna funcionalidad mágica documentada.


Por otro lado donde colocas el '_' en métodos y propiedades de visibilidad/acceso privado esto es simplemente una convención de nombres que se usaba en PHP 4 para definir las propiedades y métodos eran privados en una clase, se lo hacia porque en ese entonces PHP no tenia la característica de definir la visibilidad/acceso a través de las palabras reservadas private, public, protected, ahora se lo sigue adoptando pero no es necesario, inclusive existen frameworks que recomiendan esto en su guía de estilo de código.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de facundo

Que significa el guion bajo en POO ?

Publicado por facundo (185 intervenciones) el 30/07/2017 04:41:18
Gracias, me sirvio mucho tu respuesta, saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar