elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Aplicando al PHP : POO (Renovado :: Active Record)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aplicando al PHP : POO (Renovado :: Active Record)  (Leído 7,917 veces)
Baaaw Oic

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Aplicando al PHP : POO (Renovado :: Active Record)
« en: 18 Febrero 2010, 21:45 pm »

Miercoles, 17 de Febrero del 2010 [1]
Programacion orientada a objetos POO


Hola soy Baaaw Oic y a partir de ahora ire publicando el poco conocimiento, tecnicas, etc que tengo sobre lenguaje de programacion, espero que sea util a alquien, si detectas algun error enviame un MP y lo corregire si es necesario, gracias por su atencion y hablamos pronto.


Definiciones generales

El objeto como elemento principal, es la representacion abstracta de los objetos del mundo real (bicicletas, vehiculos, casas, personas, etc); un objeto es un conjunto de atributos y metodos relacionados entre si. Los atributos representan el estado en el que se encuentra un objeto en un momento dado, mientras que los metodos el comportamiento que puede realizar el objeto.

Caracteristicas

Entre sus principales caracteristicas tenemos:

* Abstraccion: Es separar los atributos que realmente sirven para el funcionamiento de un software.
* Encapsulacion: Permite el ocultamiento de codigo asegurandonos que el funcionamiento interno de un objeto es desconocida para otros.
* Reutilizacion: La utilizacion de clases deriva atributos y metodos a otras clases del mismo tipo.
* Polimorfismo: Indica literalmente la posibilidad de que una entidad tome muchas formas.

Conclusion

El objeto como representación abstracta de las entidades del mundo real permite que el programador pueda reconocer los atributos y comportamientos del mismo de una mejor manera; la fácil detección de los estados y comportamientos de un objeto permiten que el usuario sepa manipularlo y adaptarlo a su software.


Fuentes consultadas

* Libro : Programación orientada a objetos.
* Libro : Estructuras de datos en JAVA: Compatible con JAVA2
* Libro : Fundamentos de programación: Algoritmos, estructuras de datos y objetos.
* Wikipedia.


Proximo : Evolucion de los paradigmas de programacion.


« Última modificación: 21 Febrero 2010, 22:18 pm por Baaaw Oic » En línea

Baaaw Oic

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: [Taller] - Programacion orientada a objetos y su aplicacion al PHP
« Respuesta #1 en: 18 Febrero 2010, 21:46 pm »

Sabado, 20 de Febrero del 2010 [2]
Evolucion de los paradigmas de programacion

Pues bien, a grandes rasgos se pueden distinguir 3.

1) Programacion en espaguetti: Como su propio nombre lo dice, se representa como un monton de hilos intrincados. Es tipico de los lenguajes de programacion antiguos.

2) Programacion estructurada: Escribe de forma mas clara, utiliza 3 estructuras: secuencia, seleccion e iteracion.

3) Programacion orientada a objetos: Las tecnicas de la programacion estructura no son suficientes para desarrollar nuevas aplicaciones, la POO busca desarrollar un software en el menor tiempo posible, que sea facil de implementar y modificar.


Fuentes consultadas

* Wikipedia.


Proximo : Active record.


« Última modificación: 21 Febrero 2010, 21:07 pm por Baaaw Oic » En línea

Baaaw Oic

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: [Taller] - Programacion orientada a objetos y su aplicacion al PHP
« Respuesta #2 en: 18 Febrero 2010, 21:47 pm »

Domingo, 21 de Febrero del 2010 [3]
Active Record y PHP

Del autor: Los ejemplos que ire añadiendo no seran nada enrevesados, estaran mas orientados a dar una demostracion de como usar el active record con php aplicando las caracteristicas de la POO.

Definicion de Active Record

"En ingeniería informática, el patrón active record es un patrón de diseño que se suele dar en las aplicaciones empresariales. Active Record es un enfoque al problema de acceder a los datos de una base de datos. Una fila en la tabla de la base de datos (o vista) se envuelve en una clase, de manera que se asocian filas únicas de la base de datos con objetos del lenguaje de programación usado."
[Wikipedia (Consultado el 21 Febrero 2010)]



1) Primero creamos la Base de datos y la tabla usuario:

Código
  1. CREATE DATABASE `web` ;
  2.  
  3. CREATE TABLE `usuario` (
  4.  `id` int(11) NOT NULL auto_increment,
  5.  `nombres` varchar(30) default NULL,
  6.  `apellidos` varchar(30) NOT NULL,
  7.  `sexo` int(11) NOT NULL,
  8.  PRIMARY KEY  (`id`)
  9. ) ENGINE=INNODB DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

2) Ahora creamos el sitio ("htpdocs/www/active" - all files here) y la clase para la conexion:

Clase para la conexion: (conexion.php)

Código
  1. class Conexion
  2. {
  3. private $_CON;
  4.  
  5. function __construct()
  6. {
  7. $conex = array('localhost','root','miclaveROOT','web');
  8. $this->_CON = mysql_connect($conex[0],$conex[1],$conex[2]);
  9. mysql_select_db($conex[3],$this->_CON);
  10. }
  11.  
  12. public function conex()
  13. {
  14. return $this->_CON;
  15. }
  16. }

3) Creamos la clase ActiveRecord (Buscar y guardar)
Clase para active Record: (activerecord.php)

Código
  1. //Clase demostrativa elaborada por Baaaw Oic ºº Active Record..
  2. include("conexion.php");
  3. class Active
  4. {
  5. function error_handler()
  6. {
  7. die("Ups ... un error ha ocurrido.");
  8. return true;
  9. }
  10.  
  11. public function busca($codigo)
  12. {
  13. $tabla = get_class($this);
  14. $campos = $this->campos($tabla);
  15. $sentencia = "select * from $tabla where $campos[0]='$codigo'";
  16. $arreglo = $this->sentencia($sentencia);
  17. $numero = mysql_num_rows($arreglo);
  18. if($numero>0)
  19. {
  20. $this->definevalores($tabla,$arreglo);
  21. return 1;
  22. }else{ return 0; }
  23. }
  24.  
  25. public function guarda()
  26. {
  27. $tabla = get_class($this);
  28. $campos = $this->campos($tabla,true);
  29. $valores = array();
  30. $tamanio = sizeof($campos);
  31.  
  32. for($i=0;$i<$tamanio;$i++)
  33. {
  34. $elemento = split("-",$campos[$i]);
  35. if($elemento[2]=='NO' and strlen($this->$elemento[0])==0 and $i>0){ return 0; }
  36. else{ $valores[] = $this->$elemento[0]; }
  37. }
  38. $campos = $this->campos($tabla);
  39. $consulta = "insert into $tabla (".implode(",",$campos).") values ('".implode("','",$valores)."')";
  40. $arreglo = $this->sentencia($consulta);
  41. return 1;
  42. }
  43.  
  44. private function sentencia($query)
  45. {
  46. $con = new Conexion();
  47. $sentencia = mysql_query($query,$con->conex());
  48. if($sentencia){ return $sentencia;}
  49. else
  50. {
  51. set_error_handler($this->error_handler());
  52. return false;
  53. }
  54. }
  55.  
  56. private function definevalores($tabla,$arreglo)
  57. {
  58. $campos = $this->campos($tabla);
  59. $contenido = mysql_fetch_array($arreglo);
  60. foreach($campos as $valor)
  61. {
  62. $this->$valor = $contenido[$valor];
  63. }
  64. }
  65.  
  66. private function campos($tabla,$detalles=false)
  67. {
  68. $columnas = array();
  69. $sentencia = "show columns from $tabla";
  70. $consulta = $this->sentencia($sentencia);
  71. $numero = mysql_num_fields($consulta);
  72. while($arreglo = mysql_fetch_array($consulta))
  73. {
  74. $parametro = $arreglo[0];
  75. if($detalles==true)
  76. {
  77. for($i=1;$i<$numero;$i++)
  78. {
  79. $parametro = $parametro . "-" . $arreglo[$i];
  80. }
  81. }
  82. $columnas[] = $parametro;
  83. }
  84. return $columnas;
  85. }
  86. }

4) Creamos la clase que representara a la tabla usuario de la BD

Objeto que representa al usuario: (usuario.php)
Código
  1. include("activerecord.php");
  2. class Usuario extends Active
  3. {
  4. private $id;
  5. private $nombres;
  6. private $apellidos;
  7. private $sexo;
  8.  
  9.    public function __set($var, $val){
  10.        $this->$var = $val;
  11.    }
  12.  
  13.    public function __get($var){
  14.        return $this->$var;
  15.    }
  16. }

5) Index y funcionamiento (index.php)
Ejemplo guardando registro

Código
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <title>Ejemplo</title>
  4. </head>
  5. <body>
  6.  
  7. <?
  8. include("usuario.php");
  9. $usu = new Usuario();
  10. //el ide es autogenerado por lo tanto no es necesario definirlo
  11. $usu->nombres='Jose Francisco';
  12. $usu->apellidos='El mejor';
  13. $usu->sexo=1;
  14. $usu->guarda();
  15. ?>
  16.  
  17. </body>
  18. </html>

Ejemplo buscando registro

Código
  1. <html xmlns="http://www.w3.org/1999/xhtml">
  2. <head>
  3. <title>Documento sin título</title>
  4. </head>
  5. <body>
  6.  
  7. <?
  8. include("usuario.php");
  9. $usu = new Usuario();
  10. $usu->busca(1);
  11. echo $usu->apellidos;
  12. ?>
  13.  
  14. </body>
  15. </html>



Caracteristicas usadas en el ejemplo:

* Encapsulamiento.
* Abstraccion
* Reutilizacion




Pronto estare renovando esta sección, muchos saludos y espero verlos pronto.
Saludos. Espero MP's con sugerencias. xD
« Última modificación: 21 Febrero 2010, 21:56 pm por Baaaw Oic » En línea

Baaaw Oic

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: [Taller] - Programacion orientada a objetos y su aplicacion al PHP
« Respuesta #3 en: 20 Febrero 2010, 16:18 pm »

[Reservado 3]
En línea

Baaaw Oic

Desconectado Desconectado

Mensajes: 79


Ver Perfil
Re: Aplicando al PHP : POO (Renovado)
« Respuesta #4 en: 21 Febrero 2010, 21:46 pm »

[Reservado 4]
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Entendiendo y aplicando DSPlit (By 2Fac3R)
Análisis y Diseño de Malware
2Fac3R 0 2,505 Último mensaje 16 Septiembre 2011, 20:46 pm
por 2Fac3R
Windows 8 incluirá un renovado sistema de escritura a mano
Noticias
wolfbcn 0 2,461 Último mensaje 6 Febrero 2012, 18:26 pm
por wolfbcn
Pordescargadirecta, Gratisjuegos y SeriesPepito son denunciadas aplicando la Ley
Noticias
wolfbcn 3 3,578 Último mensaje 9 Marzo 2012, 03:12 am
por dimitrix
Renovado el calendario de Outlook.com
Noticias
wolfbcn 0 1,450 Último mensaje 2 Abril 2013, 21:13 pm
por wolfbcn
Nace PARES 2.0, el renovado Portal de Archivos Españoles
Noticias
wolfbcn 0 1,028 Último mensaje 11 Mayo 2016, 01:51 am
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines