jueves, 4 de septiembre de 2014
PHP - Funciones Camel Case
Que es Camel Case?
Camel case consiste en pasar strings de string_uno a stringUno, substituir las barras bajas por la primera letra en mayúscula de la palabra después de la barra baja.
Es útil?
Pues la respuesta es si.
Esta técnica es muy útil sobretodo cuando la utilizas dentro de las funciones mágicas de PHP como por ejemplo la función __call.
Imáginemos que tenemos un clase que realiza conexiones a la base de datos, donde le tenemos que pasar el nombre del campo y su valor.
<?php class Connect { public function __call($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; } /** As of PHP 5.3.0 */ public static function __callStatic($name, $arguments) { // Note: value of $name is case sensitive. echo "Calling static method '$name' " . implode(', ', $arguments). "\n"; } function from_camel_case($str) { $str[0] = strtolower($str[0]); $func = create_function('$c', 'return "_" . strtolower($c[1]);'); return preg_replace_callback('/([A-Z])/', $func, $str); } function to_camel_case($str, $capitalise_first_char = false) { if($capitalise_first_char) { $str[0] = strtoupper($str[0]); } $func = create_function('$c', 'return strtoupper($c[1]);'); return preg_replace_callback('/_([a-z])/', $func, $str); } } $obj = new Connect; $obj->getById(2); MethodTest::getById(2);
A simple vista diriamos esto es imposible de que realice una consulta a la base de datos, pero la respuesta es NO, porque SI que es posible y ahora veréis el porqué.
Tal y como os he comentado antes camel case pasa de hola_daycry a holaDaycry y al reves.
Y la función __call, se utiliza cuando estamos llamando a una función de una clase y ésta no existe.
Si dentro de la función __call ejecutamos la función from camel case del la variable $name, que es la variable que contiene el nombre de la función que estamos ejecutando.
public function __call($name, $arguments) { $name = from_camel_case($name); // Note: value of $name is case sensitive. echo "Calling object method '$name' " . implode(', ', $arguments). "\n"; }
Este método devolverá lo siguiente:
Calling object method 'get_by_id' 2
Con lo que si hicieramos un explode de la variable $name y cogemos la posición 2 del resultado, obtendríamos la palabra id.
Con lo cual ya podríamos hacer la consulta de la siguiente forma:
$query = "Select * from tabla where". $nameExplode[2]."=".$argument;
Posiblemente si copiáis el ejemplo tal cual os dé errores, pero creo que el concepto que quiero aportar está claro.
Suscribirse a:
Enviar comentarios
(
Atom
)
Sígueme en las Redes Sociales
Donaciones
Datos personales
Entradas populares
-
En este apartado vamos a explicar como ejercutar archivos PHP a través del terminal de Ubuntu. Lo primero que tendríamos que hacer es inst...
-
En este blog voy a comentar un tema que se utilizan en casi todas las páginas web que existen, y es el tema de la paginación. La paginaci...
-
Este post trata de la integración de la librería PHPExcel en Codeigniter, aunque se podría aplicar a cualquier librería, como por ejemplo mP...
-
Ejemplo para añadir o sumar un número determinado de hora/s, minuto/s, segundo/s a una fecha en php. Con la función strtotime se puede ...
-
Este tema es uno de los temas primordiales sobre el framework Codeigniter, ya que en alguna ocación nos hemos visto obligados a recoger dato...
© Espacio Daycry - Espacio de programación 2013 . Powered by Bootstrap , Blogger templates and RWD Testing Tool
No hay comentarios :
Publicar un comentario