PHP

Documentar Código fuente PHP con ApiGen

Documentar código fuente PHP con ApiGen
Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Documentar con ApiGen

Hoy en día, la gran mayoría de la comunidad de programadores consideran como una buena práctica el hecho de comentar el código fuente, siempre y cuando estos comentarios estén estructurados y escritos de forma correcta; para que algún programa pueda ayúdanos a generar rápidamente nuestra documentación.

El principal objetivo de documentar el código fuente es básicamente es para facilitar la identificación y comprensión del funcionamiento o uso de las clases y sus métodos por todos los integrantes de un equipo de desarrolladores.

Hay muchas herramientas que nos pueden ayudar a documentar nuestro código fuente pero esta vez nos encargaremos de ApiGen.

1.- Documentar correctamente las clases y métodos.

ApiGen

2.- Descargar ApiGen desde su página web http://www.apigen.org/ y guardarlo en alguna ubicación del disco duro, en mi caso por ejemplo lo puse en C:/apigen/apigen.phar

3.- Verificar si ApiGen se ejecuta correctamente. Desde la consola de Windows nos ubicamos en el directorio donde guardamos el apigen.phar y ejecutamos la siguiente línea de comandos.

Documentar código Fuente con ApiGen

Si les aparece algo parecido a lo siguiente quiere decir que ya estamos listos para generar nuestra documentación de código fuente.

Documentar código Fuente con ApiGen

4.- Generamos nuestra documentación de código fuente; para ello es necesario tener identificado el directorio donde se encuentra nuestro código fuente PHP, y crear un directorio donde guardaremos los archivos generados por el ApiGen.

Ejecutar las siguientes líneas de comando en la consola de Windows.

Documentar código Fuente con ApiGen

5.- Revisar la documentación en el directorio asignado.

Referencias:

http://www.apigen.org/

https://www.sitepoint.com/generate-documentation-with-apigen/

http://code-epicenter.com/apigen-generate-documentation-for-your-php-project/

 

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Crear Helper en Codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Los helper son basicamente funciones que nos ayudaran en el proceso del desarrollo que podemos llamar desde las vistas o controladores y no digo modelos por que no se deberia llamarlos desde hay.

crearlas son sumamente facil es mas si es que tienes una funcion ya escrita en php simplemente la puedes copiar y comodolar algunas cosas si es que esta trabajando con base de datos de lo contrario no deberia ser necesario mover nada y como suelo hacer poco floro y mas accion.

ubicamos la carpeta donde debemos tener los helper y no es nada dificil por que codeigniter ya viene con una carpeta con ese nombre.

ubicacion_helper

ahora puedes crear un archivo php pero debe tener un sufijo “_helper” por ejemplo en la imagen tengo 2 helper que se llama sistema y web pero cumpliendo con el requisito de codeigniter se debe colocar “_helper” y entonces queda sistema_helper y web_helper.

ahora abrimos el archivo y comenzamos a programar y veran lo facil que es en este caso voy a crear 2 ejemplos de helper 1 basica y la otra utlizando base de datos.

1) crearemos un helper que nos ayude a crear url amigables una funcion que le pasen un string y te devuelva una cadena para que pase tranquilamente como url.

 

//esto no es obligatorio pero por un tema de seguridad que nos dice si BASEPATH no esta definido no va a cargar
if (!defined('BASEPATH')){exit('No direct script access allowed');}
//aqui es simple preguntamos si no existe la funcion urls_amigables la podemos crear de lo contrario no se crea
if (!function_exists('urls_amigables')) {
    //creamos la funcion y no explico mas sobre que es cada linea por que eso ya es otro tema.
    function urls_amigables($url) {
    $url = strtolower($url);
    $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ');
    $repl = array('a', 'e', 'i', 'o', 'u', 'n');
    $url = str_replace ($find, $repl, $url);
    $find = array(' ', '&', '\r\n', '\n', '+'); 
    $url = str_replace ($find, '-', $url);
    $find = array('/[^a-z0-9\-<>]/', '/[\-]+/', '/<[^>]*>/');
    $repl = array('', '-', '');
    $url = preg_replace ($find, $repl, $url);
    return $url;
    }
}


 

2) queremos un helper que revise la base de datos y sepa cual es el ultimo codigo que se tiene y a ese codigo le sumamos 1 para que sea consecutivo la secuencia de codigos (lo especial es como instaciamos para poder trabajar con la base de datos)

//esto no es obligatorio pero por un tema de seguridad que nos dice si BASEPATH no esta definido no va a cargar
if (!defined('BASEPATH')){exit('No direct script access allowed');}
//aqui es simple preguntamos si no existe la funcion urls_amigables la podemos crear de lo contrario no se crea
if (!function_exists('codigo_compra'))
{
    function codigo_compra()
    {
        //para poder usar la base de datos en el helper debemos instanciar al core de codeigniter 
        $CI= & get_instance(); 
        //al ser instanciado es el equivalente a $this que se tiene en control
        //el siguiente proceso facil de entender igual no va al caso
        if ($CI->db->get("pedidos")->num_rows()>0)
        {
            $num=$CI->db->order_by("id","desc")->get("pedidos")->row_array();
            $num= (int) $num["codigo"];
            return str_pad($num+1, 8, "0", STR_PAD_LEFT);
 
        }
        else 
        {
            return str_pad(1, 10, "0", STR_PAD_LEFT);
        }
    }
}

si ya tiene cu helper lo unico que falta es cargarlo en al carpeta config en el archivo autoload.php y buscamos la linea donde muestra:

$autoload['helper'] = array();

ahora solo debe colocar el nombre de tu helper para que cargue y no es necesario que coloques el sufijo “_helper”

$autoload['helper'] = array("mihelper");

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Trabajo con Cron Job del Cpanel

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Tarde o temprano nos toparemos con la necesidad de tener tareas programadas o tambien llamadas cron job en los cpanel y en linux el archivo crontab (/etc/crontab) que sirve de mucho esto ya que de lo contrario tendriamos que estar detras del sistema y el aplicativo no nos estaria ayudando mucho pero si aun de lo dicho no entiendo mucho en que te puede servir te doy algunas ideas:

  1. enviar mail de recordatorio cuando  ya van a vencer sus facturas.
  2. Enviar boletines mensuales a todos los usuarios suscritos.
  3. Un sistema de ticket enviar mail de recordatorio de atencion.
  4. Alertar si un producto tiene poco stock por medio de un correo.
  5. Actualizacion  de registros en ciertas fechas que se cumplan
  6. .

  7. Sistema de agenda donde puedes hacer alarmas con fechas

entre muchas cosas mas que se te puedan ocurrir al entender la gran ayuda que puede ser pero se que si eres programador que ve por primera vez este tema te sentiras confundido como yo lo pase cuando tuve que toparme hace varios años atras. Entonces voy a desarrollar un caso que te ayudara mejor a entender.

CASO:
Tenemos un sistema de colegio donde tiene facturacion y contamos con un cronograma de pagos  quiero decir que tenemos una tabla con las fechas que debe pagar y vamos a avisar al cliente que su factura se vencera pero claro debemos enviar 2 dias antes que venza la fecha.

tenemos una tabla asi donde tenemos la fecha que vence “date_expiration” y al cliente “client_id”

cronograma

nuestro codigo del lenguaje de programacion que utilices debe restar 2 dias al date_expiration pero aqui lo vamos hacer con php. Realizare un codigo que simplemente va hacer un recorrigo a la tabla y en

la consulta le restare 2 dias y esa respuesta la comparare con la fecha actual y coinciden es que faltan 2 dias para que su fecha se venza.

 

$link=mysql_connect("localhost","root","pass");
mysql_select_db("colegio",$link);
 
//lo que hacemos aqui es una consulta a la tabla expiration_invoice y a al campo "date_expiration" le restamos 2 dias
$query=mysql_query("select DATE_ADD(date_expiration, INTERVAL -2 DAY) as fecha,client_id from expiration_invoice",$link)
//recorremos lo que nos devuelve la query
while ($data=mysql_fetch_array($query))
{
 
	if ($data["fecha"]==date("Y-m-d"))
	{
 
		/*hacemos una consulta a la tabla cliente por el id que tenemos "cliente_id" 
		y obtenemos el mail  para poder enviarle el correo informandole que vencera su factura*/
 
	}
 
}

 

en ese codigo fuente esta toda la logica y la idea es que cada dia esto se tiene que ejecutar a las 0 horas que ya seria el inicio de un nuevo dia. Asi todos los dias estaria haciendo el recorrido a revisar quien cumple la condicion pero como hacemos que corra cada dia automaticamente por que no es la idea que madrugues a ejecutar el archivo.

entonces si tienes un cpanel debes buscar la opcion:

cpanel_crontab

ya dentro de la opcion cron job debemos configurar desde esta pantalla

configuracion_cpanel_cronjob

aqui no ya nos ayuda mucho con la configuracion ya que tiene algunos predeterminados que son los mas comunes y tiene el que necesitamos pero explicare de todas maneras.

tarea_cpanel_crogramada

Minuto: 0
Hora: 0
Dia: *
Mes: *
Dia de Sema: *

en cristiano lo que dice hay es que se ejecutara:
en el minuto 0 de la hora 0 todos los dias de todos los meses de todas las semanas
y esto resumuento es que se ejecute a las 0 horas de todos los dias.

el punto de comando es donde debes ejecutar un comando linux y para ejecutar un archivo php en linux debes indicar la ubicacion del archivo y colocar antes php y resulta en nuestro caso esta ruta “/var/www/cron.php” y para ejecutarlo debe quedar asi “php /var/www/cron.php”.

se pueden hacer muchas combinaciones ya dependiendo de su necesidad del proyecto alguna duda escribir en la caja de comentarios.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Usar La libreria PHPMAILER en CODEIGNITER

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+

Al poco tiempo que comence a usar codeigniter se me habia presentado la necesidad de usar la libreria phpmailer que ya es parte de nuestra tipica librerias preferidas a la hora de desarrollar un proyecto por lo bueno que llega a ser.

antes de comenzar debes ya tener la libreria phpmailer descargada y tener listo una instalado el codeigniter y nos vamos a la carpeta libraries que es el lugar donde debemos colocar la carpeta que nos da la libreria phpmailer y debe quedar asi.

instalar_phpmailer_codeigniter

ahora que lo tenemos instalado codeigniter nunca se enterara que existe si no le indicamos y para eso debemos ir a autoload.php que se encuentra en config

ubicar_autoload_codeigniter

puedes tener cargada algunas librerias por defecto

$autoload['libraries']=array('template','session','database');

pero falta agregar la de phpmailer.

$autoload['libraries']=array('template','session','database','phpmailer');

hasta ahora vamos bien pero falta lo que a muchos confunde que es el amarre que se debe hacer en la carpeta libraries y creamos un archivo My_phpmailer.php con el siguiente codigo que en realidad creamos una libreria para codeigniter que dentro de la libreria hacemos un include de el core del phpmailer.

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
class My_PHPMailer {
    public function My_PHPMailer() {
        require_once('PHPMailer/class.phpmailer.php');
    }
}

si colocaste todo en su sitio no es necesario que modifiques la ruta que damos en el require_once y con esto ya podemos usar nuestra libreria en cualquier control por ejemplo:

 public function envio()
{
        $mail = new PHPMailer();
        $mail->SetLanguage('es');
        $mail->FromName = "luisrodriguez.pe";
        $mail->From = "no-reply@luisrodriguez.pe";
        $mail->Subject = "asunto del mensaje";
        $mail->AddAddress("luizmirodriguez@gmail.com");
        $mail->Body = "cuerpo de mensaje";
        $mail->IsHTML(true);
        $mail->Send();
}

espero que les ayude y cualquier duda en los comentarios de abajo.

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more

Tipicas preguntas de Codeigniter

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
  • Como eliminar el index.php que lleva por defecto

    creas en la raiz del proyecto un archivo .httacess con el sigueinte contenido

    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|assets|robots|css|fonts|js|img\.txt)
    RewriteRule ^(.*)$ /index.php/$1 [L]

    en el archivo config.php debes modificar la linea 17 que a lo mejor cambia en otras version

    $config['index_page'] = '';
  • Donde coloco mis imagenes, css, javascript, fonts, etc

    codeigniter no dejo nos tiene ninguna carpeta para colocarlos asi que en la raiz podemos crear una carpeta para colocarlos o poder crear en la raiz todas las carpetas para nuestros archivos que usaremos en la web.

  • Como usar sessiones en codeigniter

    abres el archivo \application\config\autoload.php y activamos las sesiones que son debe buscar la variable $autoload[‘libraries’]

    $autoload['libraries'] = array('session');

    luego vas al archivo \application\config\config.php y buscas la variable $config[‘encryption_key’] y le das cualquier valor por ejemplo

    $config['encryption_key'] = 'lkjsdlkfjsd$$$dpfkñsdlkfñl';
  • Codeignietr me muestra una pagina en blanco sin errores

    esto me sucedio muchas veces y dejamos en el archivo \index.php (el el index que se encuentra en la raiz de codeigniter) como desarrollo “development” pero extrañamente no muestra ningun error y entonces por que lo hace? en realidad si ahi error como te imaginabas pero no lo muestra.

    ahi que agregar una linea de codigo a estas lineas

    if (defined('ENVIRONMENT'))
    {
    	switch (ENVIRONMENT)
    	{
    		case 'development':
                            error_reporting(E_ALL);
    		break;
     
    		case 'testing':
    		case 'production':
    			error_reporting(0);
    		break;
     
    		default:
    			exit('The application environment is not set correctly.');
    	}
    }

    asi debe quedar

    if (defined('ENVIRONMENT'))
    {
    	switch (ENVIRONMENT)
    	{
    		case 'development':
                            error_reporting(E_ALL);
                            ini_set('display_errors', 1);
    		break;
     
    		case 'testing':
    		case 'production':
    			error_reporting(0);
    		break;
     
    		default:
    			exit('The application environment is not set correctly.');
    	}
    }

    con esto ya nos debe mostrar el error

Share on LinkedInShare on FacebookTweet about this on TwitterShare on Google+
Read more