[PHP - Senior] Usando los métodos magicos __construct y __destruct en PHP

En PHP 5 se incluyeron varios métodos mágicos como __construct y __destruct a las clases los cuales no facilitan la forma de programar.

Y bien si no sabes que son estos métodos, aquí los veremos para que te des una idea de como usarlos y para que sirven.

Imaginemos el siguiente código que nos servirá para mostrar los datos de un usuario

<?php
class User {
  private $name;
  private $link;
  private $pais;

  public function setData($name = '', $link = '', $pais = '')
  {
    $this->name = $name;
    $this->link = $link;
    $this->pais = $pais;
  }

  public function getData()
  {
    echo "Nombre::".$this->name."\n";
    echo "Link::".$this->link."\n";
    echo "Pais::".$this->pais."\n";
  }
}

$user = new User();
$user->setData('Ajaxman','http://www.ajaxman.net','Mexico'); // Lease User,Link,Pais
$user->getData();
?>

Hasta ahí todo bien,sin embargo si vemos el código notamos que tenemos el método setData unicamente para asignar datos, esto se podría hacer de esta forma

<?php
$user = new User('Ajaxman','http://www.ajaxman.net','Mexico');// Lease User,Link,Pais
$user->getData();
?>

Y si queremos que funcione simplemente hay que llamar a un método igual que el nombre d e la clase de la siguiente forma.


<?php
class User {
  private $name;
  private $link;
  private $pais;

  public function User($name = '', $link = '', $pais = '')
  {
    $this->name = $name;
    $this->link = $link;
    $this->pais = $pais;
  }

  public function getData()
  {
    echo "Nombre::".$this->name."\n";
    echo "Link::".$this->link."\n";
    echo "Pais::".$this->pais."\n";
  }
}

?>

Ahora bien, desde que surgió PHP5 se puede usar métodos mágicos, uno de ellos es __construct el cual se ejecuta cuando se inicia la carga de la clase, la ventaja es que siempre se debe de llamar así y no tendrás que estar poniendo métodos con el mismo nombre de la clase y quedaría así. Seguir leyendo [PHP - Senior] Usando los métodos magicos __construct y __destruct en PHP

[PHP] Métodos estáticos en PHP

Este es un post de PHP, ya que si bien es lo que mejor manejo y ademas de que casi no hay posts de PHP en mi blog.

Bien empecemos por el principio.

Cuando estamos programando a veces no deseamos estar instanciando una clase, ya que puede que el método sea algo que simplemente devuelva algún valor, por ejemplo un parser o similar, entonces se vuelve tedioso estar haciendo, $obj =new Clase();, la solución para esto es usar un método estático.

Los métodos estáticos no necesitan ser instanciandos ademas de que son ligeramente mas rápido que los métodos normales, si bien esto no significa que debamos de dejar de usar los métodos normales, estos pueden ser muy útiles para hacer por ejemplo una especie de catalogo de funciones, aunque claro su uso depende de cada quien.

Veamos una clase con un método normal y posteriormente como seria si fuera estático.


<?php
 //Clase
class Tools{
  /// Metodo normal
  public function today($paramString = '')
  {
    setlocale(LC_ALL,'es_MX');
    $date = $paramString.utf8_encode(strftime("%A %d de %B del %Y"));
    return $date;
  }
}
$Helps = new Tools();
echo $Helps->today("Hoy es "); //Salida  Hoy es jueves 29 de julio del 2010
?>

Ahora veamos como se haría usando un método estático


<?php
 //Clase
class Tools{

 /// Metodo estatico
 public static function today($paramString = '')
 {
   setlocale(LC_ALL,'es_MX');
   $date = $paramString.utf8_encode(strftime("%A %d de %B del %Y"));
   return $date;
 }
}

echo Tools::today("Hoy es "); //Salida  Hoy es jueves 29 de julio del 2010

?>

Como podemos ver es mas simple llamarlo, claro que como menciono hay algunas cosas a tener en cuenta, las mas importantes son:

  • No existen los métodos “mágicos” __construct ni __destruct, puesto que jamas se instancia la clase, en su lugar se puede invocar otro método estático que asigne, las variables
  • No existe $this, se debe usar en su lugar self, aunque las variables tienen que ser igualmente estáticas, esto se aplica tanto en variables como métodos

Haremos un ejemplo un poco mas complejo para ver como usar self en vez de this

Seguir leyendo [PHP] Métodos estáticos en PHP

[Imagen] Juanito me está retuiteando

Bueno no se si sepan, pero desde hace meses leo un blog muy entretenido que se llama dosisdiarias, escrito por Alberto Mott, que mas bien es una tira, en donde diariamente publica una imagen muy entretenida.

Les puedo confesar que el 99.99% de sus viñetas(imagenes) me hacen reir, pero ademas hay algunas que merecen mencion honorifica, como es el caso de la de hoy, la cual es la siguiente, simplemente sin palabras.

RT

RT

Por cierto tambien vende libros de sus tiras, son dos libros disponibles en México, solo que aun no los he podido comprar.

Vía | Dosis Diarias

[Personal] Mi hijo cumple 1 año

Pues como han podido observar, ya no posteo muy frecuente, como les dije pues no tengo compu y pues se complica, aunque esta en planes muy proximos, quiza en menos de 2 meses :(

Pero bueno el punto es que esto si es algo importante que queria comentarles hoy:

Mi hijo Angel Javier cumple 1 año.

Y puedo decirles que ha sido el año mas maravilloso de mi vida, y si bien hay mas responsabilidades, estas son nada comparado con la felicidad que me da ser papa.

Otra vez Felicito mucho a mi hijo, es su primer año y tratare de que se la pase muy bien aunque sea hasta que llege del trabajo.

[Manual-PHP] Creando un proyecto MVC con Framework Kohana PHP parte I

Hagamos un ejemplo muy bien explicado sobre cómo usar el Framework Kohana PHP con MVC usando ORM entre otras cosas, para que vean para que sirve y todo lo que pueden hacer con el

Ya sabemos cómo instalarlo ahora procedamos a trabajar.

Como ejemplo haremos una aplicación que liste productos, maneje altas y bajas de una tienda con un Front-End y un Back-End.

Para empezar necesitamos lo siguiente

*Requisitos

  • Apache (ModRewrite instalado)
  • PHP 5.2
  • MySQL
  • Kohana 3 Framework

*Opcionales

  • SQlFront
  • Phpmyadmin
  • Editor de código como Webuilder (Luego veremos cómo hacer casi lo mismo con Netbeans un IDE completo)

Haremos una nueva instalación de Kohana, en nuestra PC que será nuestro servidor (localhost) copiamos el contenido del framework a una carpeta que se llame tienda (en mi caso E:/www/tienda/)

Y acceso a mi website escribiendo http://localhost/tienda/  y ahí veremos nuestro install ahora navegamos hasta  E:/www/tienda/ y ahí estará ese archivo, lo borramos (si todo salió ok, si no corregir y verificar hasta que todo este en verde)

Esta vez vamos empezar por los datos para que al final hagamos el website.
Necesitamos una tabla de productos usaremos el siguiente SQL con los datos básicos de cada producto.

Como regla general hay que tener en cuenta que la base de datos debe de tener las siguientes características:

  • Nombre de la tabla en Plural (“productos”)
  • Nombre de los campos en Singular (“descripción”)
  • La clave principal se llamara id, en minúsculas (Se puede poner otra cosa pero habría que editar nuestra clase que manejara esa tabla por ello lo dejaremos como id)

CREATE TABLE `productos` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `nombre` varchar(255) DEFAULT NULL,
 `descripcion` text,
 `activo` int(1) DEFAULT '1',
 PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Agregamos el siguiente contenido

INSERT INTO `productos` VALUES (1,'Agua Debian','Agua Embotellada 1 Lts Marca Debian',1);
INSERT INTO `productos` VALUES (2,'Refresco Php','Refresco 2 Lts Marca Php Sabor Uva',1);
INSERT INTO `productos` VALUES (3,'Paleta Ubuntu','Paleta Ubuntu sabor Cafe 1pza',1);

Ahora editaremos nuestro bootstrap   (E:/www/tienda/application/bootstrap.php)
Buscaremos el configuración del init y escribiremos los siguiente

<?php
//...
//...
Kohana::init(array(
 'base_url'   => 'http://localhost/tienda/',//Aqui le decimos cual será la url del proyecto
 'index_file' => FALSE, //                  //Le indicamos que usara urls amigables (sin .php)
));
...
...
//Buscaremos el Route en el mismo script y lo editaremos
..
...
Route::set('default', '(<controller>(/<action>(/<id>)))')
 ->defaults(array(
 'controller' => 'tienda',  //Nombre del controlador por default
 'action'     => 'index',   //Acción por default (lo dejamos en index)
 ));

Lo guardamos (:wq XD ) y vamos a ver que en la raíz del proyecto hay una archivo llamado example.htaccess lo renombramos a .htaccess que será el que manejara las urls amigables para no tener el tienda/index.php/controlador ser tienda/controlador.

Les recomiendo comentar la siguiente línea para no tener problemas en las direcciones

# Installation directory
#RewriteBase /kohana/ pueden poner /tienda y va a funcionar pero es mejor quitarla
# ya que con ello evitaremos problemas cuando estemos cambiando de un servidor local
# a un servidor de producción

Lo guardamos (:wq XD )  Y ahora vayamos a crear nuestro controlador.

Entramos a E:/www/tienda/application/classes/controller y creamos tienda.php
Y creamos nuestro controlador

<?php defined('SYSPATH') or die('No direct script access.');

class Controller_Tienda extends Controller {
/**
 * Controller_Tienda Es el controlador por default recuerden el bootstrap
 * todos los controladores llevan esta sintaxis, Controller_<Nombre_del_controlador>
 *
 *  action_index() Es la acción por default (ejemplo http://localhost/tienda/accion)
 *  si no se especifica en la url (ejemplo http://localhost/tienda/accion, se usara
 *  index por default y la sintaxis es action_<nombre_de_la_accion>
 */
 public function action_index()
 {
 echo "Programando ....";
 }

} // End Tienda

Lo guardamos (:wq XD ) y naveguemos a http://localhost/tienda/ veremos que dirá “Programando ….”, si no vemos eso es que algo hicimos mal y hay que volver a ver en donde nos fallo

Ahora bien, procederemos a conectar la base de datos, para ello vamos a editar el archivo de configuración de la base de datos E:/www/tienda/modules/database/config/database.php

Y agregaremos la conexión mysql, pueden usar PDO(pero prefiero hacerlo como ejemplo de forma tradicional)

<?php defined('SYSPATH') or die('No direct access allowed.');

return array
(
 'default' => array
 (
 'type'       => 'mysql',
 'connection' => array(
 /**
 * The following options are available for MySQL:
 *
 * string   hostname
 * string   username
 * string   password
 * boolean  persistent
 * string   database
 *
 * Ports and sockets may be appended to the hostname.
 */
 'hostname'   => 'localhost',  ////Usa los datos de tu conexión MYSQL
 'username'   => "root",       ////Usa los datos de tu conexión MYSQL
 'password'   => "localhost",  ////Usa los datos de tu conexión MYSQL
 'persistent' => FALSE,        ////Opcional
 'database'   => 'kh_tienda',  ////Usa los datos de tu conexión MYSQL
 ),
 'table_prefix' => '',
 'charset'      => 'utf8',
 'caching'      => FALSE,
 'profiling'    => TRUE,
 ),
 //Aquí continúa con el PDO, ese de momento no hay que tocarlo
 //..
 //....
 //......
)

Ahora que ya lo tenemos vamos a decirle a kohana que agregue los módulos de base de datos y orm, necesarios para que funcione nuestro ejemplo, para ello hay que editar otra vez nuestro archivo bootstrap ya descomentar los módulos de manera que quede así.

Seguir leyendo [Manual-PHP] Creando un proyecto MVC con Framework Kohana PHP parte I

[Ajaxman] Hoy el blog cumple 3 Años

Bueno ya sé que se me paso un par de días, pero lo importante es recordarlo.

Hace 3 años (con 2 días ja) Nació este humilde blog, y si bien lo he descuidado bastante les pido su compresión, ya que no tengo PC, en la casa y se me hace difícil postear, y en los meses anteriores estuve ocupado programando Anunce.com.

El blog nació con la idea de escribir muchos artículos sobre ajax y Javascript básicamente, sin embargo ha tomado otros rumbos, mas hacia Php, y hasta aviación, tal vez no sea del gusto de todos, pero, ¿para eso es un blog no?, para poner lo que uno quiera.


<?php

class Birthday extends happyBirthday {
 static $AGE;
 public static function setAge()
 {
 self::$AGE = 3;
 }

 public static function party()
 {
 self::setAge();
 return self::$AGE;
 }
}

echo Birthday::party();

Y como últimamente lo he dicho tengo un buen de cosas sobre las cuales quisiera postear, GoogleMaps, KohanaPHP, Orm, POO, PHP5, Etc, pero no me alcanza el tiempo.

La compra de una nueva PC esta programada para en 2 meses, y pues créanme que quiero seguir posteando y aprovechare cualquier momento para irme a un ciber y pues postear algo.

Por cierto estoy pensando regalar algo por el cumple pero no se que, veamos si recibimos algunos buenos comentarios veamos que podemos regalar, se me ocurre un servicio de hosting o algo así, así que comenten, y el requisito más importante, entren a anunce.com y pruébenlo, pronto les diré la dinámica.

Una cosa más tengo más proyectos en mente, y Anunce.com solo es para usuarios de México, prometo pronto lanzar una versión para algún país que nos visite mucho.

Sobre los ingresos son pocos, pero sirven de algo, para le hosting y una que otra playera.

Algo que debo de hacer mención especial en este post es:

Agradecer a mi Esposa (Suly) y a mi Hijo (Ángel Javier) que son ellos los que me inspiran a ser mejor y a buscar formas de progresar (Además de aguantarme cuando estoy frente al PC) ya que durante este tiempo de casados y más con mi bebe (ya tiene 10 meses) han sido increíbles, la verdad ser padre es indescriptible lo que se siente cuando dice papa, o cuando se ríe, en fin estoy muy feliz y pues por ellos pronto lanzare mas proyectos.

Saludos y vamos por muchos años mas
PD: EL premio es en serio solo déjenme definir lo detalles

EasyToBook.com, un Portal de reservas on line very EASY

Hoy les quiero platicar del portal de reservas en línea EasyToBook.com

Me puse a revisarlo ya que se ve muy interesante, para empezar algo que debemos destacar es su interfaz muy limpia y amigable, además de que cuando realizas una búsqueda trae autocompletado algo muy útil si estas indeciso sobre a qué lugar en especifico desear viajar.

EasyToBook.com

EasyToBook.com

El portal está disponible en 7 idiomas (holandés, inglés, alemán, italiano, español, francés y japonés), por lo cual es muy seguro que te sientas muy a gusto navegando en este sitio, en tu mismo idioma y desde el sofa de tu casa en Ciudad de México.

Entrando al portal podemos hacer una búsqueda de un destino, y veremos lo hoteles disponibles en el mismo, si damos click a uno de los destinos en el home, veremos aparte de los hoteles disponibles muchas más información de ese destino, como iglesias, monumentos, parques, mercados, centros conferénciales o museos.

Algo que encontré en este portal y que no había visto nunca es que cuando ent6ras a un destino puedes ver hoteles que están relacionados con algún evento, por ejemplo en el siguiente link pueden ver lo hoteles donde se pudieron haber hospedado cuando fue la Dutch PHP Conference, en Amsterdam http://www.easytobook.com/es/paises-bajos/holanda-septentrional/amsterdam/eventos-especiales/dutch-php-conference-20l0-amsterdam-hoteles/ (ojo ya paso, fue en junio, conferencia de PHP), pero así como este evento hay mucho mas y así sabrán que hoteles les quedan cerca de dichos eventos, para no llegar tarde.

También algo muy importante a destacar es que cuando entras a reservar un hotel, este cuenta con una página donde aparecen todas sus características, y lo más importante una sección de críticas del hotel, en donde viene la opinión de sus huéspedes, y una calificación.

Sin duda un portal que hay que tener en cuenta en cuenta a la hora de buscar algún destino para vacacionar sobre todo en estos días cuando están tan cerca las vacaciones de verano.

Y si alguno tiene dudas sobre comprar en línea por la seguridad, no se preocupen este portal cuanta con certificado SSL que asegura que sus datos están protegidos.

A mí ya me dieron ganas de ir a Ámsterdam, yo vi varios hoteles con grandes descuentos.

Ojo los destinos son de todo el mundo en más de 130 países

Enlace al portal: EasyToBook.com, un Portal de reservas on line very EASY

Page 2 of 9612345102030...Last »

Recibe nuestro contenido por email

Vas a recibir un email con los artículos escritos durante el día.

Categorias

Historico de entradas publicadas