![]() |
include / import estuve viendo el tema Programacion a 3 capas PHP pero quede un poco perdido, tengo definido lo siguiente: Cita:
saludos |
Re: include / import Persona debiera de ir en el modelo, te recomiendo que leas sobre MVC |
Re: include / import Antes que te metas en "aguas profundas" (como el tema MVC ;-)) lo que tienes que tener en cuenta que una arquitectura de 3 capas se puede hacer perfectamente con 3 directorios, donde en cada uno colocas clases que hace una taréa específica de acuerdo a la responsabilidad de esa capa. Es decir, podrías tener algo como: presentación/ -> Html.class.php dominio/ -> Persona.class.php persistencia/ -> PersonaPersistente.class.php -> BaseDeDatos.class.php La diferencia entre las clases "Persona" es que en dominio solo trata cosas de más alto nivel relacionadas con la "lógica de negocio" pero cuando quiere persistir información o recuperarla, habla con su par "Persona" de la capa de persistencia, que resuelve todo lo que tiene que ver con la base de datos y la "persona". Es un "pasamanos", pero te aseguras que en cada capa se haga una actividad concreta distinta de la otra. presentación -> dominio -> persistencia En algún momento verás que parecerá "redundante" pero el tema es que será así cuando el sistema es muy pequeño, pero cuando entres a crecer, será fundamental para bajar y tener contenido el crecimiento de la complejidad. Nota: otro agregado que se puede hacer es una clase "fachada" que recibe todas las peticiones sobre la capa / paquete y las contesta, simplificando la dependencia contra muchas clases del paquete (siempre alquien que use el paquete irá contra la fachada). |
Re: include / import enriqueplace, esactamente lo que tengo creado son carpetas asi mismo como dices, pero lo que no se es como hago referencia a las clases que estan dentro de ellas.. ejemplo en presentacion como puedo incluir o importar(no se cual de los dos se debe usar)una clase que esta en dominio.. saludos |
Re: include / import "Importar" no existe en PHP, solo incluir o requerir. Yo te recomiendo para el caso de "objetos" hagas siempre un require_once, ya que pueden clases requerir la misma clase y con esto solo te ejecuta el primer requiere y no te da ningún error. Una opción simple es crear un archivo de configuración tipo "configuracion.php" que defina las rutas relativas para las tres capas / paquetes. Luego, en cada paquete te creas un "configuracion.php" que apunte al real en la raiz ( require_once ('../configuracion'); ) y haces que todas las clases siempre requieran un configuracion.php en su mismo nivel (require('configuracion.php');). Por consiguiente, no importa desde donde llames las clases, siempre irán al único configuracion.php y este define las rutas. Y listo. Si estás en Html.class.php puedes hacer: [capa presentación] Código PHP: Código PHP: Código PHP: |
Re: include / import enriqueplace, entendi la parte de los require_once, pero lo que no entiendo bien es el fichero configuracion.php .. me puedes poner ejemplo... gracias |
Re: include / import En el archivo de configuracion.php deberás colocar las constantes para ubicar cada capa / paquete / directorio, y luego todo lo que necesite tu aplicación. configuracion.php Código PHP: Con el tema de los "namespace" de PHP, este tema debería quedar resuelto (hay que esperar que los servidores de hosting también actualicen sus versiones). |
Re: include / import ese fichero seria el mismo para cada carpeta?? |
Re: include / import Lee bien la explicación anterior... solo hay un configuracion.php "real" en la raiz, el resto son configuración.php "falsos" que existen físicamente pero que apuntan al real. |
Re: include / import enriqueplace, volvi a leer lo ke posteas arriba, ahora me surge la duda en esta linea de codigo: <?php define('HOME',$_SERVER[DOCUMENT_ROOT]); define('APLICA',HOME."/aplicacion"); define('DOM',APLICA."/dominio"); define('PRE',APLICA."/presentacion"); define('PER',APLICA."/persistencia"); ?> el document_root es una variable global o tengo ke sustituirla pr la dir de mi sitio? gracias de nuevo |
Re: include / import Hola yellow1984, Es una variable que apunta al document root donde están tus archivos. Saludos. |
Re: include / import Estimado, aquí es la parte donde debo dejar de "darte de comer en la boca" y que empieces "a pescar por ti mismo"... buscar RTFM |
Re: include / import gracias gatorV y enriqueplace .. me funciono ok |
Respuesta: include / import Una preguntaa en el ejemplo que puso Enrique acerca de 3 capas .. por ejemplo Listarusuarios tendria k hacer una clase usuario por cada capa para persistencia ,dominio y que pasaria si qusiera programar ListarFactura ... pregunto tendria que hacer la clase Factura para cada capa dominio y persistenacia ??? y asi fuera siempre ?????? con los demas¿?? osea estaria llenando un monton de archivos clases usuario,factura,ordendecompra,provvedores esa misma cantidad de archivos tendria k ir para capa dominio y persistencia??? si fuera por ejemplo un sistema de compras pekeño :S?'' osea no creen que es demasiado archivos clases :S? o nose porfa sakenme de la duda .... yo plantearia asii ... capa presentacion listarcliente.php,agregarfactura.php,modificarfact ura.php oentre los dos ultimos seria mantenimientofactura.php capa dominio .-. crearia la clase CLiente,Clase FActura ,Clase ORden cada clase con sus funciones de agregar,moficar,listar,etc donde por ejemplo agarrando .. class Cliente { // ago las instancias requiere_once --- configuracion y de la otra capa persistencia function Listar() { obj=new Data(); $sql = mandaria un "store procedure" si tubiera parametros tamb.. o una sentencia sql return obj->query($sql); } } y en la Capa Persistencia .- Clss Data { var $idCon; function __construct() { $idCon=mysql_connect("localhost","root","1234")); mysql_select_db("empresa",$idCon); } function query($sql) { $result=mysql_query($sql,$idCon); return $result; } } bueno la idea algo asi para tener un solo archivo en la capa Data la cual se puede mejorar para poderse conectar con varias base de datos ,,...... peroo asi en la Capa dato solo se llamara funciones de agregar, listar, eliminar pasando con parametros array() asi en la capa dominio solo ahi se tendria k crear las clases que tendrias que utilzar y pasarle el nombre del store procedure con parametros si tiene claro .... y asi sucesivamente en este ejemplo con la clase Factura,Clase Orden , etcc etcc .. bueno espero me capten la idea ..... me gustaria saber sii mi logica esta mall y si se puede mejorar algo con mi logica y ponerlo llevar ala practica y sobre todo utilizar store procedure con parametros espero amigos del foro me puedan ayudar =D y dejar en claro a todos =) ... Espero su respuesta y una replantacion =) |
Respuesta: include / import Cita:
También, conceptualmente hablando, no necesariamente tienes que tener una clase por cada tema, ya que ahí está el punto de la POO, tú tienes que componen objetos que contienen a su vez otros objetos. No es POO tener por cada tema un objeto suelto que no se relaciona con nadie más. En lo que respecta al tamaño de los sistemas, la primera impresión es así cuando haces un sistema pequeño, parece que todo esto es "una sobrecarga innecesaria", pero cuando tu sistema inmediatamente empieza a crecer el diseño de 3 capas es indispensable para tener desacoplado cada tema (presentación, dominio y persistencia). Cita:
Cita:
Cita:
|
Respuesta: include / import Amigos .. lei sobre front controllers pero no me quedo claro algunas cosas al momento de organizar mi forma de trabajooo.. por ejemplo....tengo un index.php pagina que solo sera la unica entrada por la cual sera manejada mediante acciones que el usuario realize la pagina por ejemplo (noticias,pedidosmusicales,agenda grupal) trato de hacer un mantenimiento por cada una de ellas tanto agregar,modificar y eliminar.. para esooo despues de lo que me comentaste de trabajar con las capas y el controlador ise estoo.. proceso del pedido o accion del cliente 1.-accion: listar Noticia (esta accion por defecto se ejecuta aldar clik enel boton Noticias) 2.-redirecciona index.php al FrontController la cual a su vez ase otro redireccionamiento al CONTROL ESPECIFICO llamado "NoticiasController.php" la cual es una clasee con funciones(agreggarnoticia,listarnoticia,actualizar noticia,etc) , como la accion por defecto es listarnoticia llama la funcion "Listarnoticia" de esa clase la cual contiene esto formato : nota:este controlador solo hacer redireccionamiento noticiacontroller.php Class NoticiasCOntroller // declaraciones public function agregarnoticia {} public function modificarnoticia {} public funcion ListarNoticia { // codigo de include la cual llamara al objeto clase "noticia" la cual esta clase esta en una carpeta aparte y se comporta como capa llamada capa Dominio //llama a la funcion.... correspondiente // y llama la a vistaa o pagina solo para mostrar el resultado "Listarnoticias.php" } capa dominio-------- es is es una carpeta ClsNoticia.php : es una clase de la capa dominio la cual contienen: include(../persistencia/ClsData.php) class noticia { //declaraciones public function listarnoticia { $sql="select * from noticias" objdata= new consultar($sql) return objdata; // puede tener fallas de codigo ya que solo recalco mi ideaa en este ejemplito } } -----Capa Persitencia---------- :s una carpeta llamda persisnteica donde solo tengo una archivo clase llamado "ClsData" ClsData.php class ClsData { // declaraciones public function consultar($sql) { conec=mysql_conection obj=mysql_result($sql,conec) return obj; /// tambien el codigo faltaa corregir pero es la idea de esta capaa retorna conteniendo en un array la cualtamb me falto declarar como array =P jajaja pero la idea es esa.. } luego ase el retornooo hasta la capa dominio y este la controlador donde el controlador como mencione en una de su funciones busca la plantilla "listarnoticias.php" y muestraa al naveganteee con todas las noticias registradas en su base de datos =D .. pregunto amigos de este foro estara bien mi forma de organzacion de trabajo? o parece que estoy programando de mas?? algoque se pueda mejorar?? para no hacer tanto codigoo mas que todo en lso controllers pork parece que tendre que hacer POR ACCION UN CONTROLLER especifico DIFERENTE :s? y el front controoller en este caso solo redirecciona alos controllers especificos :S? o es la misma defincion porfaaaa ayudamee en estas preguntas talves con tu ayuda podria mejorar esto =) k tengo de duda antes de emepezar a programar .. muchas gracias espero tus respuestas =D Atte Mario } |
| La zona horaria es GMT -6. Ahora son las 19:42. |
Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.