Preguntas resueltas en Slack 2

En estas semanas las dudas que hemos resuelto han sido bastante específicas y la mayoría no eran aptas para ser incluidas en este artículo, por ello he tardado más en reunir el material suficiente para realizar un nuevo post.

A pesar de lo anterior, el texto está listo y ha quedado bastante jugoso, así que no los haré esperar más y los dejaré con el compendio de  preguntas resueltas:

¿Cómo hacer un confirm alert? Pregunta ycaicedo

Este ejemplo es con javascript usando el helper Html::link() o Html::linkAction() que permite mostrar primero un diálogo de confirmación al usuario, aunque es fácil de saltar, por ejemplo si el usuario desactiva javascript en el navegador:

<?= Html::linkAction("borrar/$item->id", 'Borrar', 'onclick="return confirm(\'¿Está seguro?\')"') ?>

¿KumbiaPHP soporta CamelCase en el nombre de tablas? Pregunta abriceno

Con el atributo $source de la clase ActiveRecord se le puede indicar a que tabla consultar, pero el desarrollador debe acordarse de hacer el cambio.Ejemplo:


<?php

class MateriaPrima extends ActiveRecord {

    //Tabla utilizada para realizar el mapeo
    protected $source = 'MateriaPrima';
}

¿Cómo le inserto una clase a un select generado con Form::dbSelect()? Pregunta jerson.fuentes

El helper Form::dbSelect() tiene los siguientes argumentos:

Form::dbSelect(campo_id, campoAMostrar,array(modelo,metodo),"Seleccione",atributos)

Ejemplo:


Form::dbSelect("lotes.lotes_categorias_id","nombrecategoria",null,"Seleccione",'class="form-control"');

Saben como después de actualizar un dato, redirigirme a la vista anterior

Para redireccionar en KumbiaPHP existe la clase Redirect

La redirección se puede hacer con Redirect::to() antecedido con un return para que sea lo último que ejecute.

Recomendaciones de joanhey

Mitos sobre el rendimiento de PHP

Busted! 10 Performance Myths you should avoid. Es una presentación muy recomendable de Thomas Lohner de SysEleven GmbH que en 2015 en una charla menciona los 10 mitos sobre mejorar el rendimiento que se deben evitar.

Lo más importante es usar bien las herramientas.

HTTPie un buen sustituto de Curl

HTTPie es una app que funciona en Linux, MacOs y Windows. Es muy útil como sustituto de Curl.

Nos permite fácilmente probar nuestros servidores, API RESTful y web services.

KumbiaPHP y NetBeans IDE, los mejores amigos.

Desde tiempos inmemorables, mentiras no hace mucho, desde hace 13 años aproximadamente con mis inicios en el desarrollo de software con el lenguaje java y php, llevo usando NetBeans IDE, amado por muchos y odiado por otros tantos.

La primer característica que se le asigna por quienes no lo quieren tanto es que es pesado y lento, pueden tener razón pero esto se ve compensado por sus muchas caracteríscas y ya no viene a ser tan lento cuando solo descargas la versión que necesitas, es decir solo con los plugins para tus desarrollos, y en el caso de KumbiaPHP te recomiendo la versión NetBeans IDE PHP, pesa solo 142 MB y es gratuita. Recordemos también que es un proyecto de código libre aunque este detrás Oracle y múltiplataforma, funciona decentemente en Windows, Linux y macOS.

Descargas de NetBeans IDE

Es el mejor amigo de KumbiaPHP y de PHP en general porque:

Poderoso editor de código PHP

El editor de NetBeans PHP proporciona plantillas de código y herramientas de generación de código, como generación de “getter y setter”, refactorización, tales como “renombrar instantáneamente”, sugerencias de parámetros, sugerencias y arreglos rápidos, y completado de código inteligente.

Autocompletado de código y visualización de la documentación. Ctrl + Espacio

Proyectos PHP

 NetBeans ofrece una versión del IDE hecha a medida para el desarrollo de sitios y aplicaciones web de PHP que comprenden una variedad de lenguajes de scripting y mark-up. El editor de PHP está dinámicamente integrado con HTML, JavaScript y funciones de edición CSS. También se integra son sistemas de control de versiones como Git, Mercurial y Subversion.

Navegación en los proyectos
El navegador permite ir rápidamente a atributos y funciones solo dando doble clic

No importa el IDE que uses, lo importante es que uses alguno, con el que te sientas cómodo y te ayude a trabajar más rápido. Mi elección hasta ahora ha sido NetBeans.

Este artículo hace parte de la serie iniciada por Nelson Rojas: Programar código PHP ¿IDE o editor de Texto?

Preguntas resueltas en Slack 1

¡Hola Kumbieros!

Como algunos sabrán, va en aumento las personas que nos empiezan a contactar a través del chat de KumbiaPHP en Slack. Donde de manera voluntaria y altruista Kumbieros con más experiencia dedicando algo de su tiempo ayudan a novatos y no tan novatos a resolver sus dudas sobre el framework y otros menesteres propios del diseño e implementación de software. Si aun no has ingresado puedes pedir tu ingreso en esta dirección: http://slack.kumbiaphp.com/

Slack es muy bueno para dar soporte, pero con el transcurrir del tiempo los mensajes se van perdiendo y se escurre por el desagüe ese gran contenido que nos podría ayudar a todos. Por eso hemos decidido crear esta sección para mantener de manera permanente y pública esta valiosa información. Sin más introducción les dejo la siguiente colección de preguntas y respuestas:

¿Cómo hacer enlaces en KumbiaPHP que registre en donde estoy o mejor dicho el enlace activo?

Pregunta jerson.fuentes
Pregunta relacionada de josher1601

¿De alguna forma se puede obtener el controlador que estoy viendo y la acción?

En el controlador y la vista disponemos de variables para obtener está información:
$module_name;
$controller_name;
$action_name;

Ejemplo de uso en un controlador:


<?php
class AppController extends Controller
{
  final protected function initialize()
  {
    Flash::info("El módulo es $this->module_name"); //Si hay módulo retorna el nombre del módulo
    Flash::info("El controlador es $this->controller_name"); //Retorna el nombre del controlador
    Flash::info("La acción es $this->action_name");  //Retorna el nombre de la acción
  }

  final protected function finalize()
  {
  }
}

Ejemplo de uso en una vista:

Usted está en el controlador <?= $controller_name ?> y la acción <?= $action_name ?>

 

¿Para que funcione Flass::success() había que activar algo?

Pregunta marcelok. Pregunta relacionada de yecaicedo:

Acabé de realizar un CRUD sencillo pero cuando guarda no me muestra el Flash::valid()

Para mostrar los mensajes Flash y solo si hay redirección de URL (usando por ejemplo Redirect::to()) se debe poner antes de ninguna salida, la función session_start() con ponerlo en el controlador que lo necesita es suficiente.

¿Cuando realizo el save() hay algún método que retorne el last_insert_id? Pregunta xavi92

Si haces un save() el objeto ya tiene el valor en el campo id

Ejemplo:


<?php

//Si guarda correctamente
if($album->save()){
  $album->id; //Retorna el id con el cual ha sido guardado
}

¿En Skeleton puedo usar al 100% el ancho de la pantalla? Leí que el grid tiene un ancho de 960px Pregunta marcelok

Es igual para todos los frameworks css, los row siempre son fluidos, si no se usa container será del máximo siempre, si se usa container el máximo será 960 que se puede cambiar si se quiere. Hay que tener cuidado con usar el máximo de la pantalla ya que hay pantallas muy anchas y por usabilidad esto podría ser un fallo.

¿Me gustaría saber utilizar librerías propias? Hace tiempo utilicé la de Captchar… Pero si son algo mas complejas no tengo idea. Pregunta viclomu

La idea general es la siguiente. Van en la carpeta vendor si es para PSR0 y PSR4 lib, las que no lo son cada una tiene una forma, lo mejor es crear un fichero php en libs y poner la carpeta dentro de libs con la librería. Si la librería es un fichero solo en libs. Si es mas completa va en una carpeta y un fichero nombre_clase.php que tendrá que llamar a lo que necesite, algunas traen autoload otras has de llamar al fichero principal, hay que hacerle un puente en los casos necesarios ya que no hay una forma única.

Tip para usuarios de Atom:

Se puede lanzar fácilmente un servidor de PHP con el siguiente paquete: https://atom.io/packages/php-server recuerda lanzarlo desde la carpeta public como muestra la siguiente imagen:

Esto ha sido parte de todo lo que se aprende en Slack y los Kumbieros ¡Hasta la próxima!

Casi listos para las nuevas versiones

Estamos limpiando el código para la salida de las versiones oficiales de KumbiaPHP.

¡Si versiones en plural!

Versión 0.9 -> 100% compatible con la beta2 . En breve.
Versión 1.0 -> Quitaremos todas las libs y código obsoleto.

La 1.0 con muy pequeños cambios funcionaran las apps de beta2, saldrá unas semanas después de la 0.9

Hemos añadido una nueva carpeta a la beta2. En principio era para la 1.0, pero hemos decidido que también esté en la beta2(0.9). Carpeta vendor, dentro de esta carpeta se autocargaran todas las libs que usan PSR0: Symfony, Zend, Doctrine, Swiftmail, PHPExcel, etc.

Con PHP 5.2 se podrán usar todas las libs de PEAR,  zend framework 1 y compatibles.
Con PHP 5.3 todas las clases PSR0 con namespaces.

KumbiaPHP 1.0 no usará namespaces, pero si se pueden usar. Se podrá usar composer (PHP5.3) y todas las libs de packagist. Documentaremos su uso, que es muy fácil. (Esta en fase beta).

Nuevo ActiveRecord

ActiveRecord nuevo (PHP 5.3): Va a muy buen ritmo el desarrollo, ya es funcional, es rapidísimo y no usa memoria prácticamente. En principio tendrá 3 clases principales:

  • LiteRecord: Para los que prefieren usar SQL. Un ActiveRecord básico y sin generador de consultas. Mejor rendimiento. Ya es funcional
  • ActRecord: Nuevo ActiveRecord aun puliendo y añadiendo cosas.
  • ActiveRecord: Clase compatible con el actual ActiveRecord. Será lo más compatible posible, para facilitar la migración de apps.

Se han añadido tests unitarios y la calidad del código es excelente.

https://github.com/KumbiaPHP/ActiveRecord (Repositorio en github)

https://scrutinizer-ci.com/g/KumbiaPHP/ActiveRecord/?branch=master (Calidad de código)

Hemos estado trabajando mucho, tanto que según Ohlo.net, el mes pasado eramos el 4º proyecto libre con más movimiento (hot) de cualquier lenguaje. Y segundos en PHP. Esta como un proyecto con muy alto nivel de actividad, que dan sólo al 0,6% de los proyectos libres.

https://www.ohloh.net/explore/projects  (Listado de los proyectos más ‘hot’)

https://www.ohloh.net/p/KumbiaPHP_framework

Y vienen más cambios interesantes, que iremos comentando.

Después nos faltará crear la V2.0, que será prácticamente igual a la 1.0. Sólo que mínimo PHP5.3 y todo el core de kumbia pasará a vendor/kumbia/

La V2.0 será aun más rápida.

Nueva web en KumbiaPHP

Trabajamos para tener la nueva web lista, para la salida de las nuevas versiones.

proto.kumbiaphp.com

Como siempre se agradece ayuda de la comunidad en:

  • Crear código
  • Marcar bugs
  • Terminar la documentación
  • Dar a conocer KumbiaPHP

Gracias por el apoyo a KumbiaPHP