Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] iniciando con php OO

Estas en el tema de iniciando con php OO en el foro de PHP en Foros del Web. Buenas noches, pues estoy empezando a ver que tal es utilizar php, acabo de hacer un programa (si se les dice asi en php?) que ...
  #1 (permalink)  
Antiguo 26/03/2014, 22:09
 
Fecha de Ingreso: julio-2009
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
iniciando con php OO

Buenas noches, pues estoy empezando a ver que tal es utilizar php, acabo de hacer un programa (si se les dice asi en php?) que simila lanzar dos dados, lo pongo a continuación:

1) "estructura de html"
encabezado.html
Cita:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8" />
<title>Ejemplo de PHP orientado a objetos </title>
</head>
<body>
<header>
<h1>Aplicaci&oacute;n que arroja dos dados 36000 veces</h1>
</header>
pie.html
Cita:
<footer>
<p>fin</p>
</footer>
</body>
</html>
2)index.php
Código PHP:
<?php
require_once 'TiroDeDados.php';
require_once 
'encabezado.html';
class 
index
{
    public function 
ejecutar()
    {
        
$dados = new TiroDeDados();
        
$dados->lanzar();
    }
}
$prb = new index();
$prb->ejecutar();
require_once 
'pie.html';
3) Clase Principal
Código PHP:
class TiroDeDados
{
    public function 
__construct()
    {

    }
    public function 
lanzar()
    {
        
$arreglo;
        
$arreglo $this->lanzarDados();
        
$this->desplegar($arreglo);
    }
    function 
lanzarDados()
    {
        
$arreglo;
        for(
$i=0$i<36000$i++)
            ++
$arreglo[$this->sumaCaras()-2];
        return 
$arreglo;
    }
    private function 
sumaCaras()
    {
        
$dado1 mt_rand(16);
        
$dado2 mt_rand(16);
        return 
$dado1 $dado2;
    }
    private function 
desplegar($arreglo)
    {
        
$suma 2;
        echo 
"<p>Suma    Frecuencia</p>";
        for(
$i=0$i<count($arreglo); $i++)
        {
            echo 
"<p>" $suma " -------- "  $arreglo[$i]  . "</p>";
            
$suma++;
        }
    }

en el punto 1 lo hago para no mezclar mucho html y php en un mismo archivo, igual y si fueran mas páginas pues tener esos dos archivos no seria muy util. Segun es una especie de templete.

En el punto 3 estuve pensando en colocar la funcion 'desplegar' en otra clase (que solamente se encargara de mostrar información) y que en TiroDeDados.php estuviera digamos lo "tecnico".

El programa si hace lo que quiero, mi duda es ¿como se organiza un sitio web hecho con php? y ¿si voy bien aplicando la POO?

Ojala y me haya dado a entender

Saludos
  #2 (permalink)  
Antiguo 27/03/2014, 02:18
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: iniciando con php OO

Guau, me parece que te has complicado terriblemente para lo que quieres.

Puedes mezclar php y html en el mismo archivo sin problemas, no hace falta que andes con tanta separación.

Código PHP:
<html>
<head>
<title>...</title>
</head>
<body>
<?php
$dado1
=rand(1,6);
$dado2=rand(1,6);
echo 
"<p>El dado 1 ha sacado un <b>".$dado1."</b>, el dado 2 ha sacado un <b>".$dado2."</b>. En total has sacado un <b>".($dado1+$dado2)."</b></p>";
?>
</body>
</html>
El código no hace lo mismo que el tuyo, pero te sirve de ejemplo de cómo combinar ambos lenguajes.
  #3 (permalink)  
Antiguo 27/03/2014, 10:40
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: iniciando con php OO

Sigue separando código amigo, si empiezas a hacer lo que te recomiendan por aquí acabarás asi:
Aporte en este foro

Es buena práctica que empieces separando las vistas de la lógica, te recomiendo sigas adelante. Saludos.
  #4 (permalink)  
Antiguo 27/03/2014, 14:29
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: iniciando con php OO

Cita:
Iniciado por carloscar Ver Mensaje
En el punto 3 estuve pensando en colocar la funcion 'desplegar' en otra clase (que solamente se encargara de mostrar información) y que en TiroDeDados.php estuviera digamos lo "tecnico".
Es cierto, el método desplegar no pertenece a esa clase.Si tienes un método que no utiliza ninguna variable miembro de la clase, y ninguno de sus parámetros es candidato a serlo ($arreglo no tiene mucho sentido que sea miembro de la clase TiroDeDados), ya es sospechoso.Aparte de que, como dices, ese método genera código de presentación.
Eliminando ese método, hace que se elimine también el método lanzar(), quedando solo lanzarDados (la existencia de un lanzar() y un lanzarDados() tambien indica que algo "raro" ocure).

Cita:
Iniciado por carloscar Ver Mensaje
El programa si hace lo que quiero, mi duda es ¿como se organiza un sitio web hecho con php?
Respuesta rápida: modelos por un lado, vistas por otro, controladores por otro.
Respuesta larga:
La organización la puedes hacer de muchas formas, lo que yo creo que es importante es tener definido cuáles son los pasos a realizar para resolver una petición web.Estos pasos se pueden representar en un diagrama de estados, y cada uno de esos estados puede significar una pieza a crear.

Un ejemplo:
- Paso 1: Carga de configuración mínima.
- Paso 2 : Identificación del tipo de request : GET-HTML/GET-JSON/ REST / POST /SOAP....
- Paso 3 : Inicialización de credenciales del usuario, según el tipo de request.
- Paso 3 : Enrutamiento (dada una url, quién debe gestionarla)
- Paso 4 : Seguridad (las credenciales permiten el acceso a esa ruta?Todos los parámetros necesarios para ejecutar la request están presentes, y son de los tipos correctos?
....
  #5 (permalink)  
Antiguo 27/03/2014, 18:57
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: iniciando con php OO

Cita:
El programa si hace lo que quiero, mi duda es ¿como se organiza un sitio web hecho con php? y ¿si voy bien aplicando la POO?
Por lo de la organización del sitio sigue el consejo de dashtrash y en cuanto a lo de la aplicación de la POO, depende del nivel de abstracción que quieres lograr y en ese tema cada quien te va a dar una forma de hacerlo. Para mi por ejemplo puedes tener dos clases una que represente el dado y otra que es la encargada de los lanzamientos del dado. de tal forma que el dado solo estaría calculando su cara en cada intento, eso seria el comportamiento mas natural para mi.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #6 (permalink)  
Antiguo 28/03/2014, 03:43
Avatar de dashtrash
Colaborador
 
Fecha de Ingreso: abril-2007
Ubicación: Ni en Sevilla,ni en Sanlúcar..qué más da..
Mensajes: 927
Antigüedad: 17 años
Puntos: 270
Respuesta: iniciando con php OO

Cita:
Iniciado por hhs Ver Mensaje
Para mi por ejemplo puedes tener dos clases una que represente el dado y otra que es la encargada de los lanzamientos del dado. de tal forma que el dado solo estaría calculando su cara en cada intento, eso seria el comportamiento mas natural para mi.
O, lo que sería más correcto, aunque no me queria poner tan pesado en el anterior post: una clase modela un *objeto* del sistema, no una *accion*.Una acción es resuelta por un objeto.Si una clase tiene como nombre una acción, es que no está bien construida.La clase se llama Dado, y lanzar() es un metodo de Dado, ya que es una operación posible sobre ese objeto.
Se ve mucho más fácil cuando pensamos en que un dado podria tener más de 6 caras.Entonces se vería cómo necesitaríamos pasar en el constructor de la clase información sobre el *dado*, no sobre cómo lanzarlo, que es lo que sugiere el nombre de la clase.
  #7 (permalink)  
Antiguo 28/03/2014, 03:56
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: iniciando con php OO

Totalmente de acuerdo con dashtrash, lee bien en su primer post, esto es universal para toda aplicación PHP, el principal problema que se ve en este foro, resolver las peticiones del usuario.

Sobre POO te adjunto un ejemplo de lo que haría un dado:
Código PHP:
Ver original
  1. class Dice {
  2.  
  3.     private $dots;
  4.  
  5.     function __construct($dots = 6) {
  6.         $this->dots = $dots;
  7.     }
  8.  
  9.     function roll() {
  10.         return rand(1, $this->dots);
  11.     }
  12.  
  13. }

Tanto como eso...
  #8 (permalink)  
Antiguo 28/03/2014, 12:05
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: iniciando con php OO

Cita:
Iniciado por lolainas Ver Mensaje
Totalmente de acuerdo con dashtrash, lee bien en su primer post, esto es universal para toda aplicación PHP, el principal problema que se ve en este foro, resolver las peticiones del usuario.
Coincido con la perspectiva de dashtrash, de echo dije lo mismo con otras palabras. Pero mi planteamiento era solo un ejemplo a la pregunta ¿si voy bien aplicando la POO? realizada por carloscar, en el sentido de que no tiene una respuesta sencilla ya que no se a que grado de abstracción quiere llegar para resolver su problema. El comenta que esta simulando el lanzamientos de dos dados pero eso no es suficiente para decidir que es mejor. Y como muestra tuvimos una opinión mas de dashtrash y el fragmento de código que proporcionaste, y podemos seguirle todo el dia y terminar modelando algo que podemos pensar es lo mejor, pero que al final son solo suposiciones a un problema que no conocemos a ciencia cierta.
Desde mi perspectiva el ya resolvió su problema, pero quiere mejorarlo y para eso es necesario que él sea mas claro en su planteamiento y entonces basándonos en el conocimiento del paradigma, las recomendaciones, practicas, experiencia y demás de cada quien podremos ser mas útiles.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #9 (permalink)  
Antiguo 28/03/2014, 12:29
 
Fecha de Ingreso: julio-2009
Mensajes: 4
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: iniciando con php OO

Muchas gracias por sus respuestas, voy a seguir sus consejos.
  #10 (permalink)  
Antiguo 28/03/2014, 16:03
lolainas
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: iniciando con php OO

Cita:
Iniciado por hhs Ver Mensaje
Coincido con la perspectiva de dashtrash, de echo dije lo mismo con otras palabras. Pero mi planteamiento era solo un ejemplo a la pregunta ¿si voy bien aplicando la POO? realizada por carloscar, en el sentido de que no tiene una respuesta sencilla ya que no se a que grado de abstracción quiere llegar para resolver su problema. El comenta que esta simulando el lanzamientos de dos dados pero eso no es suficiente para decidir que es mejor. Y como muestra tuvimos una opinión mas de dashtrash y el fragmento de código que proporcionaste, y podemos seguirle todo el dia y terminar modelando algo que podemos pensar es lo mejor, pero que al final son solo suposiciones a un problema que no conocemos a ciencia cierta.
Desde mi perspectiva el ya resolvió su problema, pero quiere mejorarlo y para eso es necesario que él sea mas claro en su planteamiento y entonces basándonos en el conocimiento del paradigma, las recomendaciones, practicas, experiencia y demás de cada quien podremos ser mas útiles.
Perdona ni siquiera había leído tu post.
Tienes razón, nos callaremos porque ya le resolviste el problema!

Con lo de peticiones del usuario me refería a esto:
Cita:
Iniciado por dashtrash Ver Mensaje
La organización la puedes hacer de muchas formas, lo que yo creo que es importante es tener definido cuáles son los pasos a realizar para resolver una petición web.
  #11 (permalink)  
Antiguo 28/03/2014, 16:31
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: iniciando con php OO

Cita:
Iniciado por lolainas Ver Mensaje
Perdona ni siquiera había leído tu post.
Tienes razón, nos callaremos porque ya le resolviste el problema!

Con lo de peticiones del usuario me refería a esto:
La organización la puedes hacer de muchas formas, lo que yo creo que es importante es tener definido cuáles son los pasos a realizar para resolver una petición web.
Exacto y para eso yo escribi:
Cita:
Por lo de la organización del sitio sigue el consejo de dashtrash y en cuanto a lo de la aplicación de la POO, depende del nivel de abstracción que quieres lograr
Y mi ultimo mensaje fue para aclarar el contexto de mis comentarios en este hilo. No es nada personal.
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #12 (permalink)  
Antiguo 28/03/2014, 19:36
lolainas
Invitado
 
Mensajes: n/a
Puntos:
para otra vez no nos molestamos en ayudar, si ya estas tu!
  #13 (permalink)  
Antiguo 01/04/2014, 10:52
Avatar de jheckson  
Fecha de Ingreso: febrero-2011
Ubicación: $VE->Aragua['Maracay']
Mensajes: 109
Antigüedad: 13 años, 2 meses
Puntos: 8
Respuesta: iniciando con php OO

Te recomiendo mucho este manual... Mas que enseñarte a lanzar codigo con POO, te enseña a diseñar con OO, a veces es dificil de entender y hace falta la leer nuevamente pero es realmente bueno cuando le agarras el hilo! =)

http://www.etnassoft.com/biblioteca/...tos-para-php5/
__________________
Ayudar a otros, es una de las mejores formas de aprender y ayudarse a si mismo! =)

>[Jheck]<

Etiquetas: html, iniciando
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:58.