La Ravel
La Ravel
La Ravel
Grupo en Facebook
Crecer como comunidad es uno de los retos ms grandes que tenemos como
plataforma. Sabemos que cuando un estudiante mejora, el resto tambin lo
har.
C1-Reglas de codificacin y
lineamientos de cdigo PHP
Estndares generales
Tabs o Espacios.
En el contenido dentro de corchetes, siempre se identar este contenido
con tabs. Cualquier editor decente puede configurarse para poner tabs
en vez de espacios en la identacin (Dreamweaver, Aptana, Eclipse, etc).
* @autor: Freddie
*
*/
Clases
Las clases sern colocadas en un archivo .php aparte, donde slo se
colocar el cdigo de la clase. El nombre del archivo ser el mismo del
de la clase y siempre empezar en mayscula. En lo posible, procurar
que los nombres de clase tengan una sola palabra.Las clases siguen las
mismas reglas de las funciones, por tanto, debe colocarse un comentario
antes de la declaracin de la clase explicando su utilidad.
Hacks
Los hacks que sea necesario colocar en el cdigo deben, como las
clases o funciones, ser comentados y en lo posible animar a otros
programadores a reemplazarlos o mejorarlos por soluciones mejores.
Ubicacin de archivos
En proyectos web o aplicaciones, generalmente se tendrn las siguientes
carpetas:
/ Carpeta raiz: Aqu irn los archivos .php a los que accede el usuario
directamente, interfaz, etc.
clases: Una carpeta conteniendo exclusivamente las clases usadas en el
proyecto
includes: Todos los archivos que sean llamados por otros .php en forma
de mdulos o de libreras de funciones.
db: En caso de tener la posibilidad de usar varias bases de datos, aqu
colocaremos los .php que manejen esas caractersticas multicapa para
cada sistema de datos soportado.
templates: En caso de usar un sistema de plantillas (Como smarty o el
de phpBB), aqu guardaremos todos los archivos .tpl.
}
}
while (condicin)
{
funcion();
}
Precedencia de operadores
Puedes ser un programador hardcore, pero, En serio te sabes la
precedencia de operadores en PHP? Como creemos que no, lo mejor es
siempre usar parntesis para estar seguro. Bsicamente, la idea es no
dejar operaciones complejas a freaks matematicos y estar seguros que
nuestros compaeros en el equipo con menos habilidad comprendan
todo sin problemas:
//Qu carajos da esto como resultado?
$bool = ($i < 7 && $j > 8 || $k == 4);
$otra = $matriz[$y];
$i--;
//Bien hecho
if (isset($cliente) && $cliente == 5) ...
Pero slo usa est opcin cuando no tengas el control o no ests seguro
que valor pueda tener la variable (Como en variables que llegan por
parmetro o por GET, etc)
Instruccin switch
Esta es una de las cosas ms feas de los lenguajes con estilo de C.
Cuando debas usarla, intenta seguir el siguiente estilo:
switch ($mode)
{
case 'modo1':
// Codigo de exito
break;
case 'modo2':
// Algoritmo que me retirar a los 25 aos
break;
default:
// Cdigo si todo falla
break;
}
Es cierto que se resaltaron muchas de las carencias del tan popular PHP,
pero eso lejos de matarlo, lo fortaleci. Se empez a trabajar en
versiones mejoradas, se aprendi de los nuevos lenguajes y empezaron
a llegar Frameworks de alto nivel, prcticos, fciles de usar y con un
futuro muy prometedor.
Nivel bsico
Creen nuevos controladores, acciones y vistas para probar el mini
framework
Nivel intermedio
Mejoren la clase View, creando getters como por ejemplo
"getTemplateFileName" similar a lo que hicimos en la clase Request, de
forma que quede ms POO y profesional.
Nivel avanzado
Creen nuevos objetos de tipo Response (similar a View) pero para
Json, Strings, u otros formatos
Separen los mtodos de Request que permiten analizar una url en otra
clase llamada RequestUrl, Request obtendra todos los datos de la URL
del objeto RequestUrl, ej:
Bonus Task:
Integren bootstrap en el layout.tpl.php
Mtodos Abstractos
As como hay clases abstractas, tambin hay mtodos abstractos. Estos
mtodos no son implementados en su definicin, pero obliga a las clases
que hereden el mtodo a implementarlo.
Un mtodo abstracto se puede definir en casi cualquier clase, no
necesariamente debe ser una clase abstracta. Un ejemplo en las que no
se deberan definir mtodos abstractos serian en las clases finales, pues
no se podran implementar.
Las clases finales: son las clases engredas en la POO su lema
principal: Nadie me puede mejorar!. Es decir, que no se pueden heredar.
Entonces se podra decir que son las opuestas a las clases abstractas
que son la de baja autoestima su lema: "Soy intil sola, mejorame por
favor ".
{
// gd solo maneja enteros, ergo obligamos que ancho sea entero.
$w = (int) $w;
// ancho debe ser mayor que 0
if ($w > 0)
$this->width = $w;
$this->height = $h;
/**
* Genera una imagen gd del archivo con nombre $filename
* Retorna FALSE si ocurrior algun error, por ejemplo: el tipo no es
soportado
*
* @param string $filename nombre del archivo
* @param int $type Tipo de imagen para saber que funcion usar
* @return resource Una imagen gd.
*/
protected function gdFromFile($filename, $type)
{
$gd = false;
switch ($type)
{
case IMAGETYPE_PNG:
$gd = imagecreatefrompng($filename);
break;
case IMAGETYPE_JPEG:
$gd = imagecreatefromjpeg($filename);
break;
case IMAGETYPE_GIF:
$gd = imagecreatefromgif($filename);
break;
}
return $gd;
}
/**
* Guarda una imagen gd en el archivo de nombre $filename
*
* @param resource $gd La imagen a guardar
break;
}
}
return $success;
}
// Obligamos a que las clases que hereden esta clase implementen este
mtodo
/**
* La intencion de este metodo es que guarde la imagen creada en un
archivo
*
* @param string $filename Nombre del archivo
* @return bool TRUE en caso de exito, FALSE en caso contrario
*/
abstract public function save($filename);
}
private $src;
private $origWidth;
private $origHeight;
private $origType;
/**
* Asigna los valores a los que se redimensionara la imagen
*
* @param int $w ancho
* @param int $h alto
*/
E_USER_NOTICE);
if ($h < 1)
E_USER_NOTICE);
$this->setWidth($w);
$this->setHeight($h);
}
/**
* Redimensiona la imagen con el ancho y alto asignado en resize
= imagecreatetruecolor($this->width, $this->height);
}
else
{
// todo salio bien
$success = true;
// liberamos los recursos gd
imagedestroy($base);
imagedestroy($orig);
}
}
}
else
{
$this->throwError("Gd no fue generado.", E_USER_WARNING);
}
return $success;
}
Uso de ImageResize
Cdigo :
<?php
$src = "archivo.jpg";
$dest = "archivo150x150.jpg";
$resize = new ImageResize($src);
$resize->resize(150,150);
if (!@$resize->save($dest))
{
echo "Archivo no fue generado. Error: " . error_get_last();
}
else
{
echo "Archivo $dest generado.";
}
?>
Lo cual tal vez sera util si ms adelante se necesita pasar estos valores
de un mtodo a otro dentro del controlador sin necesidad del uso de
parmetros y si se quiere agregar una seguridad extra al script (como
bloquear la posibilidad de sobreescribir o reemplazar parametros)
En fin, esta es la idea.. Aqu el cdigo:
Primeramente tenemos una clase bsica llamada ControllerParams que
permite guardar y obtener datos / parmetros:
Cdigo :
class ControllerParams
{
function __get($name)
{
return $this->params[$name];
}
class Controller
{
call_user_func_array(array(&$this,
ultimo hacemos el llamado de costumbre
}
$action),
=> 'mysql',
'host'
=> 'localhost',
'database'
=> 'pruebalaravel',
'username'
=> 'root',
'password'
=> 'CLAVE_ULTRA_SECRETA',
'charset'
=> 'utf8',
=> '',
),
=> 'pruebalaravel',
Esta es una sencilla tabla que usa Laravel para conocer el estado de la
use Illuminate\Database\Migrations\Migration;
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
$table->string('email');
$table->string('password');
$table->string('full_name');
$table->timestamps();
});
}
?
Bsicamente este mtodo le dice a Laravel que queremos crear 2
campos, uno llamado created_at y otro updated_at ambos de tipo
TIMESTAMP que servirn para saber cuando fue creado o modificado
cada uno de los registros de nuestra tabla.
Ok, Estn listos? Vamos a ejecutar la migracin: vamos de nuevo a la
consola y escribimos lo siguiente:
Cdigo :
Voil!
S que estn emocionados con nuestra nueva tabla, pero -aunque suene
doloroso- tendremos que deshacernos de ella, no se preocupen,
crearemos una nueva ms tarde y nadie notar la diferencia:
Reemplacemos el mtodo down por lo siguiente:
Cdigo :
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('users');
}
S:
Cdigo :
Schema::drop('users');
sebastiancamacho7927
hace 1 mes, 2 semanas
Si tuvieron problemas para crear la migracin:
[InvalidArgumentException]
Command "migrate:make" is not defined.
Did you mean one of these?
migrate:reset
migrate:refresh
migrate:status
migrate:rollback
migrate:install
migrate
Es probable que estn usando la versin 5 de laravel, donde se cambi la sintaxis para
esta accin.
La nueva sintaxis es:
php artisan make:migration create_user_table
Saludos desde Uruguay!
nelsonkewebs
hace 3 das, 20 horas
Hay que especificar en cada material que versin de Laravel se utiliza. En esta
documentacin se utiliza la versin 4.*
Saludos
qu es Laravel, ya lo
instalaste y configuraste la base de datos? Muy bien, porque pronto
comenzaremos a programar nuestro mdulo! Pero antes, en esta cuarta
entrega, hablaremos un poco sobre cmo funciona la web:
Los sitios web funcionan con un protocolo llamado HTTP que permite
que un cliente se comunique con un servidor y viceversa. Veamos un par
de grficos sencillos sobre esto:
Entonces esto:
Cdigo :
Route::get('/', function()
{
return View::make('hello');
});
HTML:
Cdigo :
<div class="welcome">
<a href="http://cristalab.com" title="Cristalab"><img
src="http://www.cristalab.com/images/header/logo.png"></a>
<h1>Hello Cristalab!</h1>
</div>
Ahora escriban en el
navegador http://localhost/pruebalaravel/public/cristalab
Excelente, no?
S, pero parece muy simple
Est bien, compliquemos un poco las cosas. Nuestras rutas pueden tener
parmetros que nos permitirn tener rutas dinmicas, y ms complejas,
por ejemplo:
Cdigo :
Route::get('hello/{usuario}', function($usuario)
{
return "Hello $usuario";
});
nombre. Lo mismo nos servira para tags, tutoriales, etc. Otro ejemplo:
Cdigo :
Route::get('tags/{tag}', function($tag)
{
return "You are browsing $tag tag";
});
Stay tuned.
Laravel les mostr un poco sobre la fcil sintxis de Laravel. Tambin les
mencion brevemente que detrs de esta interfaz que nos permite casi
hablarle al framework: redireccioname a, haz una vista con este
parmetro/valor, debajo de todo eso se esconde una
arquitectura SLIDA de desarrollo, haciendo a Laravel un framework de
PHP ideal tanto para principiantes como para expertos.
Mi intencin era despertar la curiosidad en la herramienta, si ests ac,
quizs tuve xito. Ahora es momento de ver cmo instalar Laravel y
Composer.
En vez de:Cdigo :
cristalab.com/tutoriales.php?id=c111339I.
Estas son tiles para los motores de bsqueda y tambin para los
usuarios. En otro tutorial hablaremos de esto.
Tambin necesitarn un conocimiento bsico de PHP, es un plus si
saben de programacin orientada a objetos o si ya han usado otros
frameworks. Igual tratar de explicar todo detalladamente y adems
tenemos la seccin de comentarios donde pueden hacer preguntas, con
suerte adems de m, otros usuarios tambin quieran ayudar a aclarar
dudas.
Composer
Composer es un excelente manejador de paquetes y dependencias
entre paquetes para PHP.
Tambin les har falta una consola de GIT, yo uso sta. Mismo proceso:
descarguen, ejecuten, siguiente, siguiente, finalizar.
Instalar Laravel
Una vez instalado composer, usando la consola/terminal (si estamos en
Windows usaremos la consola de GIT que recien instalamos), vamos a
nuestra carpeta de proyectos, por ejemplo: cd /var/www o
/home/usuario/proyectos_web/ o /c/xampp/httpdocs/ y all tipeamos:
Cdigo :
composer create-project laravel/laravel pruebalaravel
Symfony?
Directorio pblico:
Stay tuned
Curso profesional de PHP con Laravel - Abr. 10, 2014
2.3 - Primeros pasos con Laravel2 - Introduccin a Laravel
luisakt
hace 2 meses, 1 semana
Una consulta amigos, por que cuando intento crear el proyecto me tira este error/
Al iniciar :
Failed loading C:/Program Files (x86)/Ampps\php-5.3\ioncube_loader_win_5.4.dll
Las ultimas lineas:
Generating autoload files
Failed loading C:/Program Files (x86)/Ampps\php-5.3\ioncube_loader_win_5.4.dll
Generating optimized class loader
Compiling common classes
Compiling views
Failed loading C:/Program Files (x86)/Ampps\php-5.3\ioncube_loader_win_5.4.dll
Failed loading C:/Program Files (x86)/Ampps\php-5.3\ioncube_loader_win_5.4.dll
Application key [cjY3JsD5NwV4sfMN1dyEHBNTtwir6EAd] set successfully.
Failed loading C:/Program Files (x86)/Ampps\php-5.3\ioncube_loader_win_5.4.dll
Despues el resto normal descarga e instala que puede faltar?
1 puntoResponder3 comentarios
crtferguson
hace 2 meses
Actualiza tu sistema operativo a Ubuntu xD
1 puntoResponder0 comentarios
ciberutilidades.tk
hace 1 mes, 2 semanas
1 puntoResponder0 comentarios
joozepp
hace 1 mes, 2 semanas
Si estas usando windows, te recomiendo descargues la versin actual de "Xampp", este
trae todo lo que necesitas para trabajar con Laravel.
1 puntoResponder0 comentarios
2 - Introduccin a Laravel
sileence Abr. 10, 2014Laravel
@section(content)
<h1>Bienvenidos a Laravel</h1>
@stop
De vuelta al 2013
Hoy en da Symfony 2 es el framework para PHP ms robusto que
existe, Fabien Potencier, su creador, es una mquina escribiendo
cdigo. Es increble tener en PHP componentes como el DOM
crawler (disponible tambin en Laravel) que te permite recorrer y
revisar desde PHP el cdigo HTML como lo haras conFirebug y eso se
lo debemos a Fabien.
Sin embargo, Symfony parece no estar escrito para seres humanos.
Slo algunos pocos privilegiados son capaces de aprovechar todo su
potencial.
Lo que hace que muchos se hayan ido a CodeIginter, pero
<li><?=$name?></li>
</ul>
@endforeach
</ul>
//etc...
}
Laravel es FCIL
Hace aos justificaba que la gente trabajara con Codeigniter, Symfony es
muy complejo y otras alternativas como CakePHP son inciertas.
Hoy en da en el mundo de PHP tenemos un framework que est bien
hecho, combina las mejores prcticas de desarrollo y hace que
nosotros, programadores de PHP podamos escribir un cdigo del cual
sentirnos orgullosos.