Tip: Poner Variables globales en cakephp
Mas de una persona me ha preguntado como podría poner una “constante” global en su proyecto de cakephp. La gran mayoría opta por ponerlas en app_controller o en app_model según donde les sean mas útiles.
Pero existe una forma mejor, una forma que a mi me gusta mucho usar a la hora de necesitar acceder una variable en cualquier parte de mi proyecto, y es en el mismo archivo de configuración de cake el llamado core.php.
Dentro de ese archivo tenemos cosas de este tipo:
Configure::write('Session.save', 'php');
Y eso no es mas que guardar ciertas variables en nuestro archivo de configuración, es decir, ese archivo existe para que nosotros podamos configurar el cake a nuestro gusto, por lo tanto cake en algún momento accede a esas variables de manera constante, así que siempre están disponibles.
Así que si queremos guardar algún dato nosotros simplemente necesitamos agregar hasta el final de este archivo nuestra variable
Y listo, cuando queramos acceder a ese valor bastará con poner:
Y es todo.


Como neófito de cakephp yo las estaba poniendo en <em>bootstrap.php</em>, que tenía entendido que era el lugar adecuado para hacer declaraciones que afectaran a toda la aplicación. Incluso en este archivo he declarado un par de minifunciones útiles de esas que utilizo mucho.
Debería hacerlo en otro sitio?
Otra pregunta. Si el valor no va a cambiar… ¿no es más eficiente declarar una constante que guardar y leer un valor del fichero de configuración de cakephp?
Pues no es recomendable tocar el framework en si mismo, por que si en algún momento vas a actualizar el core tendrás que volver a parcharlo todo.
Por otro lado, pues si, podría guardarse una constante ahí, de hecho hasta podría mejorar el rendimiento de la aplicación. Pero la flexibilidad de la clase te permite cambiar el valor de la variable en tiempo de ejecución si fuera necesario.
Pero como dices, si están completamente seguros que no necesitan cambiar el valor, quizá definir una constante no es mala idea.
Configure también te permite cargar completamente un archivo propio de configuración, aquí un post de mariano iglesias explicando como:
http://tinyurl.com/6r7frw
Claro que de cualquier forma el toca también el bootstramp, así que sale casi lo mismo
bootstrap.php no es el core de cake, esta en tu app. Pero bootstrap.php sirve para definir funciones globales, claro que puedes usarlo para cargar constantes, pero es mas “a la cake” si usas lo que Gnuget explica aqui.
Tienes razón, no había visto que existía un archivo bootstrap en la carpeta config x)
Sorry
Ok, gracias por vuestras respuestas.
A mi me gusta mucho Cake y lo uso para todo, pero este tipo de cosas me parecen un poco “complicaciones innecesarias”…
Si un declare('constante', valor); es suficiente, veo una recarga hacer todo esto del configure:write y demás…