lunes, 11 de noviembre de 2013

Hola a todos los lectores, en ésta entrada explicaré las reglas básicas a la hora de desarrollar un componente,
Les recuerdo que como minimo deben tener buenos conocimientos de Programación Orientada a Objetos, sobre le patrón MVC y otras cosas que serán explicadas luego.
Cuando adquieran esos conocimientos podrían empezar a plantearse el desarrollo de un componente.

Hablaremos entonces sobre Components ComponentLibrary division.

Como dije en una entrada anterior, los componentes se dividen en 3 partes, en ésta entrada explicaremos la tercera división (ComponentLibrary) y su razón de existir.
ADVERTENCIAprobablemente mucha gente esté en desacuerdo con lo que expreso en las entradas de mi blog, la idea del blog siempre fue, como todo blog, la de presentar textos que muestren un poco de mi "día a día", en mi caso en el mundo de la programación y la informática.
No obstante, todos mis textos están basados en la normativa vigente, y en toda mi experiencia hasta el momento, aquellos que estén en desacuerdo, probablemente sea por ignorancia o desconocimiento, y también podríamos mencionar engreimiento, creer que saben todo, pero tampoco podemos dejar de lado que quizá esté equivocado en algunas cosas, pero con el tiempo me daré cuenta y lo aclararé en nuevas entradas al blog.

Era necesario poder tener un control de los componentes que se están utilizando, tanto como lo fue para microsoft cuando diseñó el Component Object Model (COM), para eso se diseñó un sistema de question-answer o pregunta y respuesta, donde una parte del modelo de componentes para php le preguntará al componente qué versión es, si tiene algún tipo de error, quién es el autor, que versión usa de comlib para ver si es compatible, y la idea a futuro es que el ComponentLibrarySystem le pregunte a ComLib si  puede hacer x cosa, o qué cosas puede hacer.
Además ComLib le otorga a la clase del componente ciertas funciones como control de errores, control de alias, y control de funciones borradas.

Es importante que tengan en cuenta que como dije en el primer texto donde hablé sobre PCM, esto es experimental y se irá mejorando, sobretodo el component library, éste texto habla sobre la primer versión de ComLib y ComLibSys  quizás en un futuro, se realizen cambios importantes por lo que como dije, no es aconcejable usar ésto por el momento.

ComLib, es un trait que en PCMBasic biene escrito, es necesario que si no usas el PCMBasic, utilices el código original de ComLib y no desarrolles uno propio, porque podrías llegar a tener problemas.

ComLib contiene reescritura obligatoria de una serie de funciones:

version(); que tiene que retornar la versión del componente, pero debe ser un número entero.
componentinformation(); es necesario que sea un arreglo con la siguiente estructura:

$cominformation = array(
 'Autor' => 'Alexander Eberle Renzulli',
 'Fecha' => '30/10/13',
 'contact' => 'alexander171294@gmail.com',
 'status' => 'Prototype'
);

donde el status puede ser Prototype, Stable, ?

si el arreglo no es válido, el componente no será cargado.

on_ierror(); //función que especifica lo que hará el componente si ocurre un error interno crítico.

esas funciones deben ser definidas ya que el trait solo incluye una declaración.

además el trait provee de funciones tales como:
is_alias_of('FUNCTION'); 
esta función debe ser llamada solo cuando le cambias el nombre a una función, en la función anterior solo dejas el código $this->is_alias_of('nuevafuncion');

deleted();
si borras una función se puede optar por dejarla vacía:
public function ejemplo() { ; }
o también lo que puedes hacer es llamar a la función que especifica que fue eliminada.
$this->deleted();

Al llamar a la función deleted se generará un error interno automáticamente, pero no se marcará error crítico de modo que solo quedará en el log de errores.
A la función deleted se le puede pasar opcionalmente el nombre de la función que fué eliminada

además se provee de los siguientes atributos:
(bool) public $ierror, (bool) public $criticalerror, (string) public $msgerror

$ierror contiene verdadero o falos si ocurrió un error interno
$critaclerror se torna verdadero cuando el error interno es critico y no se debería continuar ejecutando el componente
$msgerror contiene el mensaje de error, o nulo en caso de no existir error.

es recomendable que al usar el trait ComLib se use así:

use ComLib { $ierror as private; $criticalerror as private; $msgerror as private; }

ComLib versión 0.1

ComLib.php
trait ComLib
{

    public $ierror = false;
    public $criticalerror = false;
    public $msgerror = null;

    abstract public function version();
    abstract public function componentinformation();
    abstract public function on_ierror();

    final public function is_alias_of($new_function)
    {
        return call_user_func(array($this, $new_function));
    }

    final public function deleted($funcion = null)
    {
        $this->ierror = true;
        $this->msgerror = 'Component error, usted trata de llamar una funcion eliminada '.$funcion;
    }

    final public function lib_version() { return 0.1; }

}
Les recuerdo que en realidad esta ComLib es la primera y que aún no tengo bien madura la idea de como debería ser una ComLib correcta.

Saludos!

0 comentarios:

Publicar un comentario

Subscribete al RSS Follow me on Twitter!