«Andante con moto». Rapidillo, ma non troppo…

…¡ahora con más «leitmotiv»!

Historial para la etiqueta ‘php’

Por qué programo como lo hago

with 2 comments

Hace poco me tocó añadir ciertas funcionalidades a una aplicación web que escribí hace unos seis o siete años. Además de echarme algunas risas por alguna de las «barbaridades» que me encontré al revisar los archivos, me pasé un buen rato formateándolos para poder ver bien el flujo del código y comprender qué pasaba en cada sección. Y es que hace seis años todavía no tenía un estilo de código definido.

Cuando empecé a programar en PHP venía un poco viciado de programar en C y javaScript y hacía cosas como:

1
2
3
4
5
6
7
8
9
10
11
12
function mifuncion()
{
	// Función para hacer algo
	if (condicion)
	{
		// hacer una cosa
	}
	else
	{
		// hacer otra cosa
	}
}

desperdiciando valiosas líneas, algo que aprendí a evitar cuando los archivos de código se hacen más y más grandes y solo tienes 1024 píxeles de alto en tu pantalla.

A día de hoy ese mismo código lo pondría así:

1
2
3
4
5
6
7
8
function mifuncion() {
	// Función para hacer algo
	if (condicion) {
		// hacer una cosa
	} else {
		// hacer otra cosa
	}
}

ahorrándome cuatro líneas.

Como el hombre es un animal de costumbres sigo haciendo esto porque, a pesar de que las pantallas son cada día más grandes, también los IDEs ocupan cada vez más espacio en pantalla con sus barras de herramientas, de estado y plugins de calidad de código y no sé qué mil cosas más. Y no me hagáis hablar de la manía que le ha entrado a los fabricantes por las pantalla panorámicas ;-(

Mi estilo actual de programación está fuertemente basado en las recomendaciones de Sun (ahora ya parte de Oracle), publicadas en sus «Code Conventions for the Java Programming Language» (traducido al español por javaHispano -no tengo enlace al documento original- y revisado y corregido por un servidor: Convenciones de código para el lenguaje de programación Java).

NOTA: también estoy a favor de usar tabulaciones de cuatro espacios, a pesar de que el plugin de wordpress ponga 8, y en contra de lo que defiende Jamie Zawinski en el artículo «Tabs vs Spaces» que he puesto de «Obligada lectura» en la columna de la derecha.


Escrito por Lucas Vieites

febrero 11th, 2010 at 1:02 pm

[PHP] put_select() function

without comments

Función en php para crear un menú desplegable con la etiqueta "select".

/**
 * put_select returns a string with a filled <select> html form item
 * @name the name of the form object
 * @array_values a "key, value" type array with the values for the form item
 * @marked string containing the default delected value
 * @extra string with extra data for the "select" tag, such as javascript events like "onfocus" etc.
 * @return string containing an html <select> tag
 */
function put_select($name, $array_values, $marked="", $extra="") {
	$string = "";
	// Only create the item if the values are in an array
	if (is_array($array_values)) {
		$string .= '<select name="'.$name.'" '.$extra.'>'."\n";
		$string .= '<option value="--">---</option>'."\n";
		while (list($key, $value) = each($array_values)) {
			$string .= "<option value=\"".$key."\"";
			if ($key == $marked) {
				// The default selected item
				$string .= " selected";
			}
			$string .= ">".$value."</option>\n";
		}
		$string .= "</select>\n";
	} else {
		// Return an error string
		$string .= "ax_put_select() - Error 2002";
	}
	return $string;
}

Ejemplo de uso:

include 'functions.php'; // Aquí esta la función put_select
// bla bla bla ... html form etc.
$meses = array(
	"01"=>"Enero",
	"02"=>"Febrero",
	"03"=>"Marzo",
	"04"=>"Abril",
	"05"=>"Mayo",
	"06"=>"Junio",
	"07"=>"Julio",
	"08"=>"Agosto",
	"09"=>"Septiembre",
	"10"=>"Octubre",
	"11"=>"Noviembre",
	"12"=>"Diciembre"
	);
$mes_por_defecto = date("m"); // Mes por defecto es el mes actual
print('Seleccione un mes:&nbsp;'.
	put_select("losmeses", $meses, $mes_por_defecto, "onUnFocus=\"alert('Gracias!')\";")
	.'<br/>');

Generará este código HTML:

Seleccione un mes:&nbsp;<select name="losmeses" onUnFocus="alert('Gracias!')";>
<option value="--">---</option>
<option value="01">Enero</option>
<option value="02">Febrero</option>
<option value="03">Marzo</option>
<option value="04">Abril</option>
<option value="05">Mayo</option>
<option value="06">Junio</option>
<option value="07">Julio</option>
<option value="08">Agosto</option>
<option value="09">Septiembre</option>
<option value="10">Octubre</option>
<option value="11">Noviembre</option>
<option value="12" selected>Diciembre</option>
</select>
<br/>

Escrito por Lucas Vieites

diciembre 14th, 2009 at 11:14 am

Publicado en software libre,tecnología

Etiquetado con , ,

[PHP] debug() function

without comments

Función utilizada para mostrar el valor de una variable. Normalmente la uso para depurar el código.

/**
 * debug; Prints a string and a variable value in red (for debugging purposes).
 * @name string containing the name of the variable
 */
function debug($name) {
	global ${$name};
	global $debug;
	$the_style = "color:#f00;font-weight:bold;";
	// Only show output if debugging is on
	if ($debug == 1) {
		$var = ${$name};
		if (is_array($var)) {
			echo "##<b class=\"bold\">$name</b><br>\n";
			while (list($key, $value) = each($var)){
				print("\n".'<div style="'.$the_style.'">#=>'.$key.' ==> ');
				if (is_array($value)){
					print('<code>');
					print_r($value);
					print('</code>');
				} else {
					echo nl2br($value);
				}
				print('</div>'."\n");
			}
		} else {
			print('<div style="'.$the_style.'">#'.$name.'=>'.$var.'#</div>'."\n");
		}
	}
}

Ejemplo de uso:

<?php
$debug = 1;
// ...
$mi_mensaje = "Mola Hundo!";
debug("mi_mensaje"); // OJO, se pone el _nombre_ de la variable, no la variable
// ...
?>

Escrito por Lucas Vieites

diciembre 11th, 2009 at 3:59 pm

Publicado en tecnología

Etiquetado con , ,

Crear una hoja de cálculo con PHP

with 5 comments

Antes de nada: en este artículo no se explica cómo crear un archivo en formato Excel u OpenOffice.org Calc, sino de cómo hacer que estos programas «crean» que es así.

Crear una hoja de cálculo comprensible para Excel u OpenOffice.org Calc es más fácil de lo que parece. De hecho, el procedimiento que describo en este artículo realmente no crea una hoja de cálculo, sino un documento HTML con una tabla. El truco está en enviar una cabecera indicando un «mime-type» falso que será interpretado por el sistema operativo del cliente como una hoja de cálculo, tal que así:

header("Content-Type: application/vnd.ms-excel");

Leer el artículo completo »


Escrito por Lucas Vieites

octubre 15th, 2009 at 2:07 pm

Nota rápida para instalar un servidor LAMP en OpenSuSE

without comments

$ zypper in -t pattern lamp_server
$ a2enmod php5
$ /etc/init.d/mysql start
$ /etc/init.d/apache2 start
$ chkconfig -a apache mysql

Y después, evidentemente, a jugar con los archivos de configuración. Ten en cuenta que en SuSE «DocumentRoot» suele ser «/srv/www/»


Escrito por Lucas Vieites

abril 2nd, 2009 at 3:34 pm

Publicado en software libre,tecnología,web

Etiquetado con , , , , ,

Switch to our mobile site