PHP: Concatenar cadenas

Es inevitable muchas veces cuando programamos el unir cadenas.
Esta oportunidad aprenderemos cómo hacerlo en PHP.

Básicamente hay dos operadores que podremos utilizar.

El primero es el operador de concatenación ” . ” (punto), el cual une dos argumentos que estarán a derecha e izquierda y retorna el resultado.

Así:

$var1 = ‘cama’;
$var2 = ‘rada’;
$result = $var1 . $var2;
$result contendría entonces:  “camarada”.

El segundo es el operador de asignaciónsobre concatenación ” .= ” (punto igual).
Éste operador concatena al argumento de la izquierda el argumento de la derecha.

Así:

$var1 = ‘cama’;
$var1 .= ‘rones’;

$var1 contendría la cadena “camarones”.

Cabe resaltar que la atención está puesta en los operadores, independientemente de las variables que uses. Puedes hacer tus variaciones.

Por ejemplo:
$word = ‘programando  ‘ . ‘ estoy’; 
ó
$word = ‘con’;
$word .= ‘trabajo’;    


“Contrabajo”, el instrumento, jeje…

Sobre KUMBIAPHP

KumbiaPHP es un framework para aplicaciones web libre escrito en PHP5. Basado en las prácticas de desarrollo web como DRY y el Principio KISS para software comercial y educativo. Kumbiaphp fomenta la velocidad y eficiencia en la creación y mantenimiento de aplicaciones web, reemplazando tareas de codificación repetitivas por poder, control y placer.KumbiaPHP Framework PHP intenta proporcionar facilidades para construir aplicaciones robustas para entornos comerciales. Esto significa que el framework es muy flexible y configurable.KumbiaPHP es un esfuerzo por producir un framework que ayude a reducir el tiempo de desarrollo de una aplicación web sin producir efectos sobre los programadores.Sus principales características son:

  • Muy rápido
  • Fácil
  • Sistema de Plantillas sencillo
  • Administración de Cache
  • Scaffolding Avanzado
  • Modelo de Objetos y Separación MVC
  • Soporte para AJAX
  • Generación de Formularios
  • Componentes Gráficos
  • Seguridad

Audio en KumbiaPHP

Hola amigos kumbieros, en esta oportunidad me gustaría compartir con ustedes la experiencia sobre cómo insertar archivos de audio en nuestra web.

Tanto para programadores experimentados como para quienes están empezando en este mundo del desarrollo, existen esos detalles que no conocemos, esos errores que no entendemos, y es inevitable pasar largos minutos buscando la manera de plasmar en nuestro código las ideas que hay en nuestra mente. Al menos a mi como mortal me ha pasado.

En la web existe mucha información donde se explica cómo insertar audio en la web, existen ejemplos y es relativamente sencillo. Pero en el caso de hacerlo usando el framework kumbiaPHP no se encuentra mucha.  Es esa la razón por la que decidí compartir esta entrada.

Como compartí días atrás, estamos desarrollando un “Repositorio de canciones” con kumbiaPHP, y el audio es parte esencial en los requerimientos.

Kumbia posee helpers que facilitan en gran medida algunas tareas, por ejemplo el helper para insertar imagen Html::img().  Sin embargo parece no haber alguno que maneje los audios.

Buscando en la web encontré cómo insertar contenido multimedia en HTML, y para el caso del audio, algo tan sencillo como esto:

<audio controls>
      <source src="micancion.mp3" type="audio/mp3">
      </source>
</audio>


Probé en mi vista y que creen?   No funciona.
Claro…  hay que tener en cuenta la ruta. Hacer cosas como “../public/audio/micancion.mp3” quizá podría ser la solución, quizás sea lógico.
Me salgo de la carpeta donde tengo mi vista y accedo a donde tengo el audio.

Pues… no funciona.

Probamos colocando el archivo dentro de la misma carpeta de la vista; !!Debería funcionar!!

Que creen!!!

Tampoco funciona.

Y entonces!!!? Si todo está bien!!! (Bueno… eso creo)

Despues de despeinarme un par de veces, mirar el codigo, probar maneras, buscar otras formas, el “prueba y error” y un poco de desespero (jeje, era un poco “temprano”, 3 de la madrugada?), dí con el error.

El “secreto” radica en la ruta.
Debo tomar una ruta absoluta para poder acceder a mis archivos, (es una de las cosas que simplifican los helpers).
¿Desde donde partir? Desde la carpeta donde tienes el proyecto; tu framework.

Esta es la solución:

– Por fin la dices    ¬ ¬
– Jeje, calma!!! es bueno saber cómo saber. Y en gran manera, aprender de los errores.

Debes poder tu ruta así: /framework/default/public/audio/micancion.mp3
(He creado una carpeta audio, ésta no viene por defecto)
!Important. Debe iniciar con “/” para que funcione. Por si crees que no importa.
En conclusión, el codigo quedaría así.

<audio controls>
      <source src="/framework/default/public/audio/micancion.mp3" type="audio/mp3">
      </source>
</audio>


Ahora sí, a sonar!!!

KumbiaPHP, aprovechando el Redirect::to

En uno de los proyectos que estábamos desarrollando con algunos amigos de la universidad con el framework KumbiaPHP, tenía que trabajar en un módulo para hacer el CRUD de una entidad llamada “canción”.

Quisiera contarte lo que me pasó.

Había ya logrado que se actualizaran los datos en la base de datos, con un método editar, pero necesitaba que una vez actualizados, desde ese método me redirigiera a otro lugar.

Al hacer uso de Redirect::to(), me enviaba a la página principal, y no quería eso!!!
Quería que me llevara a la página donde pudiera mostrar la información de ese registro actualizado, en este caso, a otro método dentro del mismo controlador llamado InfoSong.
– Fácil!!!, usar Redirect::toAction(‘action’) con el nombre de la acción InfoSong…

Si, bueno, resulta que InfoSong recibe parámetros, un entero id para ser más preciso. Algo así: InfoSong($id).

-Ah bueno, es posible enviar parámetros desde ese método, así;  Redirect::toAction(‘action/param’).
Este… si, lo intenté. Resulta que el método editar maneja la variable $id, pensé…
facil!!! se la enviaré.
Redirect::toAction(‘InfoSong/$id’).
Pues…. no funciona.  En este caso $id lo toma como una cadena, no extrae su valor.

Que lío!!!!
Si toma como cadena lo que meta ahí, no puedo hacer cosas como “<?=$id?>” o, “objeto->dato”.
Todo lo tomaría como una cadena!!!

Y bueno… a punto de desistir y probando qué podía funcionar, vino una idea a mi mente.

– Y si mandas una variable en vez de una cadena entre comillas? ¿Qué pasaría?
    Pues…. probemos.

$action = ‘InfoSong’;
Redirect::toAction($action);
Oye!!! Funciona!!!

Genial!! Pero…. y lo del parámetro?

Pensemos….. si puedo enviar una cadena como parámetro, podría hacer que la cadena contenga la acción y el id verdad?
Aquí la ñapa: ¿Cómo concateno cadenas en PHP?  Con el operador “.” (punto).

Probemos….

$action = ‘InfoSong/’.$id;     // quedaría  “InfoSong/valor_id”, justo lo que necesito
Redirect::toAction($action);

Eureka!!!
Ahora sí, actualicemos y mostremos la vista con los cambios!!