Cakephp vs Codeigniter


Este artículo no esta basado en ninún tipo de benchmarking, ni comparativa ni mucho menos prueba de tiempos, solo una recopilación de experiencias a la hora de escoger un framework o no, claro, algo resumido, eso creo, en un solo artículo. Aclaro al lector que esta es solo una opinión personal, no una verdad.

A lo largo del tiempo que llevo como desarrollador, me he visto en ma s de una oportunidad, en la desición de que herramienta usar, desde el lenguage, las bases de datos etc. Por ahora me centrare en PHP como herramienta, por llevar mas tiempo en este lenguaje.

Escoger entre usar o no un framework va mucho de la mano con el proyecto, de hecho proyectos pequeños, no considero que requieran un framework, asi como un gran proyecto requerirá de una herramienta mas productiva, claro que también se podra realizar sin usar un framework, aun que el uso de un framework agilizaria el trabajo, y si trabajamos en un equipo, ayudaria al equipo en el uso de un estandar de codificacion y trabajo.

La pregunta es ¿qué framework debo usar ahora para desarrollar?. La búsqueda en internet me dará muchas respuestas de los aficionados, fanáticos, seguidores, etc. de uno u otro framework, demostrando y dando sus experiencias, asi como yo lo hago en este momento.

Por ahora trabajo con Cakephp, pero en algun momento trabaje con codeigniter. Ahora explico el por qué del cambio.

Codeigniter es un framework super ligero, pero casi todo hay que hacerlo o hay que prepararlo antes de empezar a trabajar; es decir, el modelo de datos, control de accesos, herramientas, etc. Mientras tanto, cakephp ya tiene todo esto hecho, incluso hasta un crud integrado, solo era cuestion de usarlo.

Mi deseo es tener una herramienta lista, que me permita empezar a trabajar ya, por otro lado symfony me ofrecia algo mejor que cakephp, sin ambargo al final decidí por cakephp por una simple razon, eocntrar una comunidad en mi idioma, con uno de los desarrolladores de cakephp como miembro, dispuesto a ayudar y resolver mis dudas. Esto me parecio la razon mas importante.

Conversando con otro desarrolador cambio de cakephp a codeigniter, el proceso inverso de lo que yo hice, y su razon, como me lo cuenta es que codeigniter no lo encasillaba en una forma de trabajo, si no el podia usar la forma que a él mas le agradaba.

Mi conclusión, no solo los factores de tiempo de ejcucion, tiempo de desarrollo, etc y otras pruebas de benchmarking son necesarias, si nola comodidad y el objetivo que un desarrolador persigue, asi como la forma de trabajo y el framework que mas se adapta a esta.

Al final la herramienta debe ser de acuerdo a lo que el desarrollador busca y no al contrario.

Anuncios

Model Library for Codeigniter


I have made a model library for codeigniter. It is based on the article http://maestric.com/doc/php/codeigniter_models

if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class MY_Model extends Model {
    
    var $table = "";
    
    function My_Model() {
        parent::Model();
        $this->load->database();
    }
    
    function find($type = 'all', $options = array()) {
        if ($type == 'first') {
            $this->db->limit(1);
        }
        if(array_key_exists('fields', $options)) {
            $this->db->select(implode(",", $options['fields']));
        }
        if(array_key_exists('where', $options)) {
            foreach ($option['where'] as $key=>$value) {
                $this->db->where($key, $value);
            }
        }
        if(array_key_exists('order', $options)) {
            foreach ($option['where'] as $key=>$value) {
                $this->db->order_by($key, $value);
            }
        }
        if(array_key_exists('limit', $options)) {
            $limit = $options['limit'];
            if(array_key_exists('limit', $limit) && !array_key_exists('offset', $limit)) {
                $this->db->limit($limit['limit']);
            }
            if(array_key_exists('limit', $limit) && array_key_exists('offset', $limit)) {
                $this->db->limit($limit['limit'], $limit['offset']);
            }
        }
        $query = $this->db->get($this->table);
        $result = $query->result_array();
        return (count($result) > 0 ? $result[0] : NULL);
    }
    
    function find_first($options) {
        return $this->find('first', $options);
    }
    
    function find_all($options) {
        return $this->find('all', $options);
    }
    
    function find_id($id) {
        if ($id == NULL) {
            return NULL;
        }
        return $this->find('first', array('where'=>array('id'=>$id)));
    }
    
    function insert($data) {
        $this->db->insert($this->table, $data);
        return $this->db->insert_id();
    }
    
    function update($id, $data) {
        $this->db->where('id', $id);
        $this->db->update($this->table, $data);
    }
    
    function delete($id) {
        if ($id != NULL) {
            $this->db->where('id', $id);
            $this->db->delete($this->table);
        }
    }
}