Archivo de la categoría: PHP

Todo lo relacionado con la programación en PHP

Uso de DateInterval – PHP Tips

La clase DateInterval se introdujo en PHP 5.3 y representa un intervalo de fechas.  y como dice la definición de la clase:

Un intervalo de fechas almacena o bien una cantidad fija de momentos (en años, meses, días, horas, etc.) o bien un string de un momento relativo en el formato que admite el constructor DateTime.

El parametro que le pasamos al constructor es el interval_spec el cual es la especificación del intervalo. El formato de este intervalo empieza con la letra P, de «periodo». Cada periodo de duración esta representado por un valor entero seguido de un indicador de periodo. Si la duración contiene elementos de tiempo esta parte esta precedida por la letra T. Por ejemplo si queremos especificar un intervalo de 1 día escribiremos P1D, si el intervalo es de 1 hora escribiremos PT1H.


// Intervalo de 1 dia

$intervalo = new DateInterval("P1D");

// Intervalo de 1 hora

$intervalo = new DateInterval("PT1H");

http://es1.php.net/manual/es/class.dateinterval.php

http://es1.php.net/manual/es/dateinterval.construct.php

Anuncio publicitario

Mejor IDE de PHP de 2014

Sitepoint ha creado una encuesta para conocer cual es el mejor entorno para la programación de PHP de 2014. Respondiendo a esta encuesta puedes conseguir uno de los siguientes regalos:

Aqui os dejo el enlace a la encuesta http://www.sitepoint.com/best-php-ide-2014-survey/

Tutoriales de PHP

He encontrado esta pagina en internet en la cual hay una gran cantidad de tutoriales para PHP, tanto para los que se quieran iniciar  como para casos particulares. Muy buen recopilatorio, lo único que están en inglés.

http://speckyboy.com/2013/05/14/php-tutorials-for-beginners/

Configurar Apache para que funcione con nuestro Dropbox

Dropbox se ha convertido en la solución principal que usamos la mayoría de nosotros para almacenamiento en la nube, no voy a entrar si es mejor o peor que otros (Box, Wuala, Ubuntu One, Google Drive), sino que es el que mejor compatibilidad tiene entre múltiples sistemas y es el que muchas aplicaciones implementan como servicio.

Tengo una cuenta de Dropbox desde hace tiempo, y la verdad no la usaba mucho, últimamente me decantaba mas por usar Box, pero en las ultimas semanas, he ido de un lado a otro y he tenido que buscarme una solución para poder trabajar en múltiples ordenadores, continuando mi trabajo donde lo había dejado y sincronizado. Aunque generalmente uso para sincronizar el trabajo Git, me he visto en la situación que no he podido realizar unos commits operativos, por lo tanto he tenido que recurrir a esta opción para tenerlo todo sincronizado.

El escenario

Las maquinas que he usado son o bien Linux, o Mac, en el caso de los Windows… lo siento no suelo usarlo para desarrollar.

Vamos a suponer que todos tenemos Dropbox, si no os podéis hacer una cuenta de las gratuitas, en la cuenta de Dropbox, he creado una cuenta llamada Devel.

Instalamos Dropbox, si no lo tenemos instalado en nuestro ordenador, y en mi caso como no me interesa sincronizar nada mas que la carpeta Devel, suelo hacer una sincronización selectiva y decir que solo me sincronice esta carpeta.

Una vez instalado, tanto en Linux la carpeta de Dropbox se nos instala en «/home/nuestroUsuario/Dropbox», en Mac se instala en «/Users/nuestroUsuario/Dropbox».

Ahora, si estamos en nuestro equipo principal de desarrollo copiamos y pegamos las carpetas principales de nuestros proyectos dentro de la carpeta «Devel», así se nos subirá todo a nuestra carpeta de Dropbox.

Configurando Apache

En linux

Los proyectos que hemos subido, por lo menos en mi caso, son proyectos PHP, alguno de los cuales necesito probarlos en Apache,  para hacer que nuestros proyectos en Dropbox funcionen en Apache los mas recomendable es instalar el modulo Userdir. Para hacerlo abrimos una consola y ejecutamos el siguiente comando para activar el modulo

sudo a2enmod userdir

Una vez habilitado el modulo este nos dira que reiniciemos apache, no lo hacemos aun, ya que tenemos que configurar este modulo, ya que por defecto este nos habilita probar los proyectos o web que estén situados en la carpeta public_html ubicada en nuestro home.

En la terminal editamos el fichero de configuración userdir.conf

vim /etc/apache2/mods-available/userdir.conf

El archivo original es asi

<IfModule mod_userdir.c>
    UserDir public_html
    UserDir disabled root
    <Directory /home/*/public_html>
        AllowOverride FileInfo AuthConfig Limit Indexes
        Options MultiViews Indexes SymLinksIfOwnerMatch
        IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Lo modificamos y lo dejamos así

<IfModule mod_userdir.c>
    UserDir Dropbox/devel
    UserDir disabled root
    <Directory /home/*/Dropbox/devel>
        AllowOverride All
        Options MultiViews Indexes SymLinksIfOwnerMatch
        IncludesNoExec
        <Limit GET POST OPTIONS>
            Require all granted
        </Limit>
        <LimitExcept GET POST OPTIONS>
            Require all denied
        </LimitExcept>
    </Directory>
</IfModule>

Con esto habilitamos el directorio de Dropbox/devel como directorio personal de desarrollo.

Antes de reiniciar el servidor es necesario cambiar los premisos de la carpeta Dropbox. Os recomiendo agregar vuestro usuario al grupo www-data y a continuación cambiar los permisos de esta manera, y una vez cambiados ya podemos reiniciar el servidor Apache.

sudo chmod -R g+rx Dropbox

Configurando Sublime Text 3

Sublime TextSublime Text es una aplicación para desarrollo la cual me esta ganando cada día mas. Tengo que decir que no soy asiduo de ella ya que para grandes proyectos uso PHPStorm y para cosas puntuales sigo siendo muy fan de TextMate, o incluso Vim, pero estas aplicaciones tienen unos «peros», los cuales los cubre el Sublime Text. Y diréis,¿ que «peros» le ves? pues bien, PHPStorm, como todos los entornos de programación basados en Java (Eclipse, Zend Studio, Netbeans), consume barbaridad de recursos, y el «peso» es muy grande. TextMate es solo para Mac, y Vim es solo para sistemas *NIX, ¿entonces,si necesitamos un entorno de programación ligero y que se pueda utilizar en todos los sistemas? pues ahí esta Sublime Text, valido para cualquier plataforma, ligero y potente.

Sublime Text es muy personalizable y lo podemos ajustar a nuestra manera de programar, y para ello contamos con cantidad de paquetes para complementarlo y personalizarlo a nuestro gusto. En este enlace nos explican como instalar estos complementos, personalizar fuentes y configurar el tema para dejarlo a nuestro gusto. Yo os recomiendo el Soda Light, sobre todo si estáis acostumbrados a TextMate.

A la hora del desarrollo yo os recomiendo instalar tambien los siguientes paquetes: SublimeLinter-php SublimeLinter-phpcs SublimeLinter-phpmd, HTML, SimpleTODO.

Ver las extensiones cargadas en PHP – PHP Tips

PHP Programming languageEn la entrada de Opciones de PHP desde Linea de comandos veíamos unas cuantas opciones con las cuales usar el comando PHP. Otra de estas opciones es usar la opción -m para ver los módulos que tenemos cargados, usar esta opción es mas clara que usar la opción -i con la cual nos da mas información.

$ php -m
[PHP Modules]
xml
tokenizer
standard
sockets
session
posix
pcre
overload
mysql
mbstring
ctype

[Zend Modules]

Mas información

Ordenando Arrays de manera natural con PHP – PHP Tips

PHP Programming languageAlgo que nos puede suceder a la hora de ordenar los valores almacenados en un array, es que si estos valores contienen números, al ordenarlo se nos muestra por ejemplo el 10 delante del 2. Esto sucede por que no ordenamos nuestro array de manera natural. Por ejemplo:


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [2] =>
 string(11) "img10.png"
 [1] =>
 string(10) "img2.png"
 [3] =>
 string(11) "img20.png"
}
*/

La función asort ordena los valores del array manteniendo sus indices, tal como vemos en el resultado, y nos ordena los valores respecto al carácter. Esta función acepta otro parámetro llamado sort_flag con el cual podemos especificar que tipo de ordenación queremos. Si lo que queremos es que nos ordene de manera natural tenemos que usar la flag SORT_NATURAL


$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

asort($array, SORT_NATURAL);

var_dump($array);

/* Devuelve
array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
}
*/

Ahora podemos ver que nuestra array esta ordenada de una manera natural, es decir, el 10 viene detrás del 2.

Otra función, la cual podríamos considerarla como un alias de la anterior es natsort nos ordena de una manera natural directamente.

$array = array('img1.png', 'img2.png', img10.png', 'img20.png');

natsort($array,);

var_dump($array);

/* Devuelve
 array(4) {
 [0] =>
 string(10) "img1.png"
 [1] =>
 string(10) "img2.png"
 [2] =>
 string(11) "img10.png"
 [3] =>
 string(11) "img20.png"
 }
 */

Error json_encode() json_decode() en Ubuntu 13.10

Durante las pasadas Navidades, y después de pensármelo mucho, actualice la versión de Ubuntu del ordenador que uso para desarrollar. Después de unos cuantos problemas, sobre todo con la tarjeta gráfica, conseguí actualizarlo y dejarlo funcional. Una vez me puse de nuevo a desarrollar me encontré con el siguiente error.

PHP Fatal error: Call to undefined function json_encode()

Resulta que con la actualización de Ubuntu, también se actualiza la versión de PHP, y con esta actualización no se instalan las extensiones de JSON, decir que este error os saldrá si usáis las funciones JSON, las cuales, si realizáis peticiones AJAX, casi seguro que implementáis.

Como solución, lo tipico, abrimos la consola, y ejecutamos el siguiente comando para instalar


sudo apt-get install php5-json

Una vez instalado ya no volverá a salirnos este error.

http://es1.php.net/manual/en/json.installation.php

How to prevent mail from going to spam

Baljit Web Developer

$to = $user_email;

$subject=’Application Form ‘;
$message=’testing’;
$headers  = «From: My site<noreply@example.com>\r\n»;
$headers .= «Reply-To: info@example.com\r\n»;
$headers .= «Return-Path: info@example.com\r\n»;
$headers .= «X-Mailer: Drupal\n»;
$headers .= ‘MIME-Version: 1.0’ . «\n»;
$headers .= ‘Content-type: text/html; charset=iso-8859-1’ . «\r\n»;
if(mail($to,$subject,$message,$headers))
{
echo «Mail Successfully Sent..»;
exit;
}

Ver la entrada original

PHP: isset() versus empty()

Kate's Code Derps

Empty() is generally better to use over isset() ‘cause empty() will pick up strings with no values and will catch empty $_REQUEST statements. Whoo!

Ver la entrada original