<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7629056966471660184</id><updated>2011-10-25T14:34:37.515-05:00</updated><category term='lima'/><category term='linux'/><category term='peruano'/><category term='conferencia'/><category term='PHP bienvenida'/><category term='sig libre'/><category term='.map'/><category term='UML'/><category term='PHP experto'/><category term='php mapscript'/><category term='RUP y UML con PHP'/><category term='pdt 2'/><category term='PHP'/><category term='seminario'/><category term='utp'/><category term='mapserver'/><category term='PHP generador'/><category term='RHCE'/><category term='UMLPHP'/><category term='ArgoUML'/><category term='sig'/><category term='pdt 2.0'/><category term='punto map'/><category term='framework'/><category term='Herramientas Case PHP'/><category term='PHP retorno'/><category term='eclipse pdt 2'/><category term='BoUML PHP'/><category term='mapfile'/><category term='Cloud computing'/><title type='text'>PHP experto</title><subtitle type='html'>Diseño orientado a objetos, patrones de diseño, PHP-Mapserver y todo lo necesario para ser un experto en PHP</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>16</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-806761184433796440</id><published>2010-03-01T14:52:00.001-05:00</published><updated>2010-03-01T14:53:33.027-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud computing'/><title type='text'>¿Qué es Cloud Computing?</title><content type='html'>&lt;small&gt;&lt;!-- by delphins --&gt;&lt;/small&gt;      &lt;div class="entry"&gt;      &lt;p&gt;Interesante video (y cómico) que explica que es Cloud Computing&lt;/p&gt; &lt;span class="vvqbox vvqyoutube" style="width: 425px; height: 344px;"&gt;&lt;object style="visibility: visible;" id="vvq-120-youtube-1" data="http://www.youtube.com/v/ae_DKNwK_ms&amp;amp;rel=0&amp;amp;fs=1&amp;amp;showsearch=0&amp;amp;showinfo=0" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;param value="opaque" name="wmode"&gt;&lt;param value="true" name="allowfullscreen"&gt;&lt;/object&gt;&lt;/span&gt; &lt;p&gt;Otro:&lt;/p&gt; &lt;span class="vvqbox vvqyoutube" style="width: 425px; height: 344px;"&gt;&lt;object style="visibility: visible;" id="vvq-120-youtube-2" data="http://www.youtube.com/v/XdBd14rjcs0&amp;amp;rel=0&amp;amp;fs=1&amp;amp;showsearch=0&amp;amp;showinfo=0" type="application/x-shockwave-flash" height="344" width="425"&gt;&lt;param value="opaque" name="wmode"&gt;&lt;param value="true" name="allowfullscreen"&gt;&lt;/object&gt;&lt;/span&gt;  &lt;script type="text/javascript"&gt;  swfobject.embedSWF("http://www.youtube.com/v/ae_DKNwK_ms&amp;amp;rel=0&amp;amp;fs=1&amp;amp;showsearch=0&amp;amp;showinfo=0", "vvq-120-youtube-1", "425", "344", "9", vvqexpressinstall, vvqflashvars, vvqparams, vvqattributes);  swfobject.embedSWF("http://www.youtube.com/v/XdBd14rjcs0&amp;amp;rel=0&amp;amp;fs=1&amp;amp;showsearch=0&amp;amp;showinfo=0", "vvq-120-youtube-2", "425", "344", "9", vvqexpressinstall, vvqflashvars, vvqparams, vvqattributes); &lt;/script&gt;     &lt;/div&gt;      P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-806761184433796440?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/806761184433796440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=806761184433796440' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/806761184433796440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/806761184433796440'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2010/03/que-es-cloud-computing.html' title='¿Qué es Cloud Computing?'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-6948385739521164885</id><published>2009-03-26T13:09:00.002-05:00</published><updated>2009-03-26T13:14:47.921-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='RHCE'/><title type='text'>Como convertirse en RHCE</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.astute-systems.com/lib/img/cert/redhat_rhce_logo.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: right; cursor: pointer; width: 129px; height: 219px;" src="http://www.astute-systems.com/lib/img/cert/redhat_rhce_logo.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:courier new;" &gt;Al fin soy RHCE, y aqui un POST de lo que te recomiendo para poder serlo&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hace unas semanas por fin logré certificarme como RHCE, y espero poder ayudar a quien lea este post a como llegar serlo.&lt;br /&gt;&lt;br /&gt;Primero les comento que NO HABLARE nada del examen ni de las preguntas, pues firme un contrato de la confidencialidad del mismo. Por lo tanto te hablaré del entorno y como tendrías que prepararte.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;J-Tips:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Primero:  Conoce mas del examen, el silabo y temas.&lt;/span&gt;&lt;br /&gt;Puedes obtener los temas en su página oficial y otras:&lt;br /&gt;&lt;br /&gt;http://www.redhat.com/certification/rhce/&lt;br /&gt;http://www.redhat.com/certification/rhce/prep_guide/&lt;br /&gt;http://www.brainbuzz.com/certifications/exams/rhce.asp?exam_id=300&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Segundo: Lleva el curso rápido de preparación.&lt;/span&gt;&lt;br /&gt;No solo te sirve para darle un repaso a todos los temas sino que tienes una sección de simulación que te servirá mucho para el exámen (aunque en el examen fue mas dificil, JE). Además podrás conocer las experiencias de tus compañeros y del entorno.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Tercero: Leete por completo el libro del curso y ejercicios.&lt;/span&gt;&lt;br /&gt;El libro del curso oficial cubre los temas del examen, así que si lo practicas bien no tendrás mucho contratiempos&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Cuarto: Duerme bien un día antes.&lt;/span&gt;&lt;br /&gt;El examen es un día completo, así que duerme bien antes y practica tus ejercicios por toda la semana excepto el día anterior.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Quinto: Debes tener experiencia en Linux al menos dos años.&lt;/span&gt;&lt;br /&gt;El examen mide la experiencia del postulante (así mismo lo dice su página oficial), así que como te darás cuenta si te pones a leer el "man" del comando a medio del examen, ya se te fueron minutos vitales. La velocidad de la solución es vital, según mi conclusion final con la gente que no aprobó es porque NO acabó el examen por tiempo.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;* Último: Aprende  SeLinux&lt;/span&gt;&lt;br /&gt;Si, lo que temías. Yo aprendí en el mismo curso, todos los booleanos y contextos necesarios, Pfffffff.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Y recuerda, es un examen en máquina 100% práctico, no hay solucionario o similar que valga. La experiencia es vital.&lt;br /&gt;&lt;br /&gt;Bueno es todo, espero haberte ayudado con la lectura y hasta otra oportunidad.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-6948385739521164885?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/6948385739521164885/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=6948385739521164885' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/6948385739521164885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/6948385739521164885'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2009/03/como-convertirse-en-rhce.html' title='Como convertirse en RHCE'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-2006536387417194478</id><published>2008-12-30T10:45:00.004-05:00</published><updated>2008-12-30T11:03:29.580-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse pdt 2'/><category scheme='http://www.blogger.com/atom/ns#' term='pdt 2'/><category scheme='http://www.blogger.com/atom/ns#' term='pdt 2.0'/><title type='text'>Eclipse PDT 2.0 lanzado</title><content type='html'>&lt;img class="alignleft size-full wp-image-118" style="border: 0pt none ; float: left; width: 284px; height: 185px;" title="Eclipse 3.4 Ganymede" src="http://www.64bitjungle.com/wp-content/uploads/2008/08/ganymede.png" alt="Eclipse 3.4 Ganymede" /&gt;Eclipse PDT 2.0 estable fue lanzado hace poco oficialmente, el 26 de Diciembre del 2008 y tiene muchas novedades.&lt;br /&gt;&lt;br /&gt;La primera gran novedad es que está basado en la versión 3.4 Eclipse Ganymade y todas sus ventajas que conlleva estar basada en ella.&lt;br /&gt;&lt;br /&gt;Se asume que esta versión es más lijera que la anterior. Lo que si es un hecho que el instalador pesa menos  :)&lt;br /&gt;&lt;br /&gt;Una nueva característica que rápidamente notaremos &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://farm4.static.flickr.com/3103/3127928318_3795f43c38.jpg?v=0"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 284px; height: 260px;" src="http://farm4.static.flickr.com/3103/3127928318_3795f43c38.jpg?v=0" alt="" border="0" /&gt;&lt;/a&gt;es en el Explorador de archivos PHP. Tenemos la posibilidad de separar nuestros recursos de aplicación, con las librerías js y estilos css, esto hace nuestro proyecto más modular desde la perspectiva del IDE. Además ahora también incluye la librería de funciones y clases de PHP nativa.&lt;br /&gt;&lt;br /&gt;Una nueva característica son los @property y @method en PHPdoc, que nos ayudará en el asistente de autocompletado para propiedades y métodos que deseamos que aparezcan(y no aparecían). Por ejemplo propiedades que publicamos a través del método mágico _get.&lt;br /&gt;&lt;br /&gt;Existen más características propia de la orientación a objetos de PHP que han incluído en el IDE. Seguiré testeando esta nueva versión para seguir posteando mis apreciaciones.&lt;br /&gt;&lt;br /&gt;Anímate ya está para la descarga el All-in-One tanto para Linux, MAc y Windows : &lt;a href="http://www.eclipse.org/pdt/"&gt;http://www.eclipse.org/pdt/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-2006536387417194478?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/2006536387417194478/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=2006536387417194478' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2006536387417194478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2006536387417194478'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/12/eclipse-pdt-20-lanzado.html' title='Eclipse PDT 2.0 lanzado'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-3549772313023118071</id><published>2008-12-15T23:05:00.062-05:00</published><updated>2008-12-16T22:49:09.339-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUP y UML con PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='ArgoUML'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP generador'/><category scheme='http://www.blogger.com/atom/ns#' term='UMLPHP'/><category scheme='http://www.blogger.com/atom/ns#' term='BoUML PHP'/><title type='text'>Generando código PHP desde UML</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2008 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Continuando con el artículo de herramientas CASE UML para PHP 5, veremos ahora la creación de código a partir de un diagrama de clases de dos herramientas: BoUML y ArgoUML.&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Indice de secciones:&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="#parte1"&gt;&lt;span style="font-weight: bold;"&gt;Revisando la generación de código&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="#parte2"&gt;Revisando las asociaciones entre clases&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;ol type="a"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="#dependencia"&gt;Dependencia&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;a href="#simple"&gt;Asociación simple&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Asociación de agregación y composición&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Asociación de generalización&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;1) &lt;a name="parte1"&gt;Revisando la generación de código&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GXVCVN62pLc/SUcv7VHL6yI/AAAAAAAAAHs/iNmsRwN6HJY/s1600-h/carrito.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 185px; height: 106px;" src="http://2.bp.blogspot.com/_GXVCVN62pLc/SUcv7VHL6yI/AAAAAAAAAHs/iNmsRwN6HJY/s200/carrito.PNG" alt="" id="BLOGGER_PHOTO_ID_5280241784441269026" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GXVCVN62pLc/SUc24xIXiPI/AAAAAAAAAH8/yNLlGeNwcqk/s1600-h/carrito2.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: left; cursor: pointer; width: 111px; height: 104px;" src="http://4.bp.blogspot.com/_GXVCVN62pLc/SUc24xIXiPI/AAAAAAAAAH8/yNLlGeNwcqk/s200/carrito2.PNG" alt="" id="BLOGGER_PHOTO_ID_5280249437004204274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Clase creada en ArgoUML            / Clase Creada en                                                                                                       BoUml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Se ha una clase Carrito, pero en diferentes herramientas. Veamos el código generado&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt; Código generado en BoUML&lt;/span&gt;&lt;span style="font-size:100%;"&gt; &lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;Se puede verificar lo siguiente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Vemos que genera el nombre de clase en PHP con el mismo nombre que en el UML&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold; font-style: italic;"&gt;&lt;span style="font-size:85%;"&gt;IMPORTANTE: Dispone de unas etiquetas de comentario  &lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;// Bouml preserved body begin/end&lt;/span&gt;&lt;span style="font-size:85%;"&gt;   que permitirá evitar la sobre-escritura de tus implementaciones una vez que hayas generado tu código&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Detectó bien la inicialización de un atributo y la visibilidad&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Se crea las carpeta según el paquete donde se encuentra (previa configuración)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;PROBLEMA:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Los valores de retorno siempre son null, a pesar de haberle especificado entero o cadena.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;PROBLEMA: &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Se crea un comentario, pero no comenta el tipo de dato de los atributos, los parámetros del método o la visibilidad.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre name="code" class="PHP"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Clase Carrito de compras&lt;br /&gt;*/&lt;br /&gt;class Carrito {&lt;br /&gt;/**&lt;br /&gt;* Cantidad de productos en el carrito&lt;br /&gt;*/&lt;br /&gt;private $cantidad = 0;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Contructor&lt;br /&gt;*/&lt;br /&gt;public function __construct()&lt;br /&gt;{&lt;br /&gt;// Bouml preserved body begin 0001F503&lt;br /&gt;&lt;br /&gt;$return=NULL;&lt;br /&gt;&lt;br /&gt;return($return);&lt;br /&gt;// Bouml preserved body end 0001F503&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function count()&lt;br /&gt;{&lt;br /&gt;// Bouml preserved body begin 0001F583&lt;br /&gt;&lt;br /&gt;$return=NULL;&lt;br /&gt;&lt;br /&gt;return($return);&lt;br /&gt;// Bouml preserved body end 0001F583&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public function guardar()&lt;br /&gt;{&lt;br /&gt;// Bouml preserved body begin 0001F603&lt;br /&gt;&lt;br /&gt;$return=NULL;&lt;br /&gt;&lt;br /&gt;return($return);&lt;br /&gt;// Bouml preserved body end 0001F603&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt;Código generado en ArgoUML&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;Se puede verificar lo siguiente:&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Vemos que genera el nombre de clase en PHP con el estilo de formato largo, con el separados underline(_) y como prefijo al nombre original en UML&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Se crea un comentario estilo PHPdoc, lo realizo de forma excelente documentando casi todo. Inclusive el creador, fecha y otros detalles minucios.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;Dispone de unas etiquetas de comentario similares al BoUML, que permitirá evitar la sobre-escritura de tus implementaciones una vez que hayas generado tu código&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Los valores de retorno son detectado, inclusive te realiza un cast de las variables.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Detectó bien la inicialización de un atributo y la visibilidad&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Te genera una carpeta por paquete.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Dispone de unas secciones especiales como /* user defined includes */ para agregar includes o requires y no ser sobre-escritos.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Para generar un tipo String, se debe especificar el tipo "char"&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:85%;" &gt;Problema: &lt;/span&gt;&lt;span style="font-size:85%;"&gt;Tiene demasiado "código extra", un código para detectar si es PHP 5, y fuerza mostrar los errores inclusive los de tipo "Notice".&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Te crea un include para cada archivo donde se aloja la clase que necesitas. si esta clase estuviera relacionada a muchas otras generaría mucho código (una para cada asociacion). Este código se consideraría tambien "extra" o "de más" si es que utilizamos el método mágico __autoload, para la carga automática de clases. O bueno claro! con los namespaces que vienen ya en PHP 5.3&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;pre name="code" class="PHP"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;error_reporting(E_ALL);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Modelo Test PHP 5 y UML - modelo\class.Carrito.php&lt;br /&gt;*&lt;br /&gt;* $Id$&lt;br /&gt;*&lt;br /&gt;* This file is part of Modelo Test PHP 5 y UML.&lt;br /&gt;*&lt;br /&gt;* Automatically generated on 16.12.2008, 00:46:11 with ArgoUML PHP module&lt;br /&gt;* (last revised $Date: 2008-04-19 08:22:08 +0200 (Sat, 19 Apr 2008) $)&lt;br /&gt;*&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;* @package modelo&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;if (0 &amp;gt; version_compare(PHP_VERSION, '5')) {&lt;br /&gt;die('This file was generated for PHP 5');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/* user defined includes */&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-includes begin&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-includes end&lt;br /&gt;&lt;br /&gt;/* user defined constants */&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-constants begin&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-constants end&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Short description of class modelo_Carrito&lt;br /&gt;*&lt;br /&gt;* @access private&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;* @package modelo&lt;br /&gt;*/&lt;br /&gt;class modelo_Carrito&lt;br /&gt;{&lt;br /&gt;// --- ASSOCIATIONS ---&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;// --- ATTRIBUTES ---&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Short description of attribute cantidad&lt;br /&gt;*&lt;br /&gt;* @access private&lt;br /&gt;* @var int&lt;br /&gt;*/&lt;br /&gt;private $cantidad = 0;&lt;br /&gt;&lt;br /&gt;// --- OPERATIONS ---&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Short description of method __construct&lt;br /&gt;*&lt;br /&gt;* @access public&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;* @return void&lt;br /&gt;*/&lt;br /&gt;public function __construct()&lt;br /&gt;{&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CFA begin&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CFA end&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Short description of method count&lt;br /&gt;*&lt;br /&gt;* @access public&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;* @return int&lt;br /&gt;*/&lt;br /&gt;public function count()&lt;br /&gt;{&lt;br /&gt;$returnValue = (int) 0;&lt;br /&gt;&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CF4 begin&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CF4 end&lt;br /&gt;&lt;br /&gt;return (int) $returnValue;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;* Short description of method guardar&lt;br /&gt;*&lt;br /&gt;* @access public&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;* @return boolean&lt;br /&gt;*/&lt;br /&gt;public function guardar()&lt;br /&gt;{&lt;br /&gt;$returnValue = (bool) false;&lt;br /&gt;&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CF6 begin&lt;br /&gt;// section -64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CF6 end&lt;br /&gt;&lt;br /&gt;return (bool) $returnValue;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;} /* end of class modelo_Carrito */&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;2) &lt;a name="parte2"&gt;Revisando las asociaciones entre clases&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Analizaremos varias asociaciones entre clases y la generación del código en PHP&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a name="dependencia"&gt;Asociacion de dependencia&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="ES"&gt;Es una relación de uso, es decir una clase usa a otra, que la necesita para su cometido. Se representa con una flecha discontinua va desde la clase utilizadora a la clase utilizada. Con la dependencia mostramos que un cambio en la clase utilizada puede afectar al funcionamiento de la clase utilizadora, pero no al contrario. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_GXVCVN62pLc/SUdJnM4NgNI/AAAAAAAAAIc/2HK0yOCLN8w/s1600-h/carrito3.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 84px;" src="http://3.bp.blogspot.com/_GXVCVN62pLc/SUdJnM4NgNI/AAAAAAAAAIc/2HK0yOCLN8w/s400/carrito3.png" alt="" id="BLOGGER_PHOTO_ID_5280270025935913170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ArgoUML&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GXVCVN62pLc/SUdKHoF0oTI/AAAAAAAAAIk/A5dB6RdqdIE/s1600-h/carrito4.PNG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 94px;" src="http://4.bp.blogspot.com/_GXVCVN62pLc/SUdKHoF0oTI/AAAAAAAAAIk/A5dB6RdqdIE/s400/carrito4.PNG" alt="" id="BLOGGER_PHOTO_ID_5280270582996574514" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;BoUml&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);font-size:130%;" &gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt;Código generado en BoUML&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;No hubo ningún cambio en el código con ésta asociación&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt;Código generado en ArgoUML&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;Por la linea 22, antes de los includes de usuario del código ArgoUML generado anteriormente, se insertan estas nuevas lineas. La clase utilizadora(dependiente) "Carrito", realiza un include_once a la clase utilizada "BD". Ésto implica que dentro de la vida de un objeto Carrito requerirá llamar a un método o una instancia de BD.&lt;br /&gt;&lt;pre name="code" class="PHP"&gt;&lt;br /&gt;/**&lt;br /&gt;* include modelo_BD&lt;br /&gt;*&lt;br /&gt;* @author Jaime M. Tan Nozawa, &amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;*/&lt;br /&gt;require_once('modelo/class.BD.php');&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;a name="simple"&gt;Asociacion simple&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;Permite asociar objetos que colaboran entre si. La diferencia con la dependencia radica en que se guarda una referencia de la otra clase.&lt;br /&gt;Esta asociación dispone de navegabilidad, esta dirección significa que uno puede obtener o "ver" el objeto apuntado, a través del objeto cliente. También implica, al igual que la dependencia, el llamar a un método u obtener la instancia de una clase.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_GXVCVN62pLc/SUg8E7pKJeI/AAAAAAAAAIs/9kxTm0W9mP8/s1600-h/carrito5.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 81px;" src="http://4.bp.blogspot.com/_GXVCVN62pLc/SUg8E7pKJeI/AAAAAAAAAIs/9kxTm0W9mP8/s400/carrito5.png" alt="" id="BLOGGER_PHOTO_ID_5280536618519373282" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ArgoUml&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_GXVCVN62pLc/SUg8KiNRTtI/AAAAAAAAAI0/rBMY05cXSbY/s1600-h/carrito6.PNG"&gt;&lt;br /&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 400px; height: 91px;" src="http://2.bp.blogspot.com/_GXVCVN62pLc/SUg8KiNRTtI/AAAAAAAAAI0/rBMY05cXSbY/s400/carrito6.PNG" alt="" id="BLOGGER_PHOTO_ID_5280536714770730706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;BoUml&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt;Código generado en BoUML&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;Para Bouml es necesario crearle el atributo donde guardará la referencia a la clase, esta se encontrará en los extremos de la asociación. En este caso Carrito solita una instancia de BD, y esta se almacenará en el nuevo atributo "conexion".&lt;br /&gt;Revisar al final del código, notar que generó un atributo más&lt;br /&gt;&lt;span&gt;&lt;br /&gt;&lt;pre name="code" class="PHP"&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Clase&amp;nbsp;Carrito&amp;nbsp;de&amp;nbsp;compras&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;class&amp;nbsp;Carrito&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Cantidad&amp;nbsp;de&amp;nbsp;productos&amp;nbsp;en&amp;nbsp;el&amp;nbsp;carrito&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;private&amp;nbsp;$cantidad&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Contructor&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;__construct()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;begin&amp;nbsp;0001F503&lt;br /&gt;&lt;br /&gt;  $return=NULL;&lt;br /&gt;&lt;br /&gt;  return($return);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;end&amp;nbsp;0001F503&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;count()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;begin&amp;nbsp;0001F583&lt;br /&gt;&lt;br /&gt;  $return=NULL;&lt;br /&gt;&lt;br /&gt;  return($return);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;end&amp;nbsp;0001F583&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public&amp;nbsp;function&amp;nbsp;guardar()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;begin&amp;nbsp;0001F603&lt;br /&gt;&lt;br /&gt;  $return=NULL;&lt;br /&gt;&lt;br /&gt;  return($return);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;Bouml&amp;nbsp;preserved&amp;nbsp;body&amp;nbsp;end&amp;nbsp;0001F603&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;instacion&amp;nbsp;de&amp;nbsp;clase&amp;nbsp;DB&amp;nbsp;en&amp;nbsp;asociacion&amp;nbsp;conexion&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;private&amp;nbsp;$conexion&amp;nbsp;=&amp;nbsp;null;&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&gt;&gt;Código generado en ArgoUML&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);font-size:100%;" &gt;&lt;&lt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;En ArgoUML no se crea el atributo en la clase Carrito, pero si crea un comentario sobre la asociación y el nombre bautizado para el extremo. Por ello he creado manualmente un atributo "conexion" en la clase.&lt;br /&gt;&lt;/span&gt;OJO, solo puse la primera parte: revisar la linea 47 y 48 del código&lt;br /&gt;&lt;pre name="code" class="PHP"&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;error_reporting(E_ALL);&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Modelo&amp;nbsp;Test&amp;nbsp;PHP&amp;nbsp;5&amp;nbsp;y&amp;nbsp;UML&amp;nbsp;-&amp;nbsp;modelo\class.Carrito.php&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;$Id$&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;This&amp;nbsp;file&amp;nbsp;is&amp;nbsp;part&amp;nbsp;of&amp;nbsp;Modelo&amp;nbsp;Test&amp;nbsp;PHP&amp;nbsp;5&amp;nbsp;y&amp;nbsp;UML.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Automatically&amp;nbsp;generated&amp;nbsp;on&amp;nbsp;16.12.2008,&amp;nbsp;01:57:32&amp;nbsp;with&amp;nbsp;ArgoUML&amp;nbsp;PHP&amp;nbsp;module&amp;nbsp;&lt;br /&gt;&amp;nbsp;*&amp;nbsp;(last&amp;nbsp;revised&amp;nbsp;$Date:&amp;nbsp;2008-04-19&amp;nbsp;08:22:08&amp;nbsp;+0200&amp;nbsp;(Sat,&amp;nbsp;19&amp;nbsp;Apr&amp;nbsp;2008)&amp;nbsp;$)&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;Jaime&amp;nbsp;M.&amp;nbsp;Tan&amp;nbsp;Nozawa,&amp;nbsp;&amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;modelo&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;br /&gt;if&amp;nbsp;(0&amp;nbsp;&amp;gt;&amp;nbsp;version_compare(PHP_VERSION,&amp;nbsp;'5'))&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;die('This&amp;nbsp;file&amp;nbsp;was&amp;nbsp;generated&amp;nbsp;for&amp;nbsp;PHP&amp;nbsp;5');&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;include&amp;nbsp;modelo_BD&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;Jaime&amp;nbsp;M.&amp;nbsp;Tan&amp;nbsp;Nozawa,&amp;nbsp;&amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;require_once('modelo/class.BD.php');&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;user&amp;nbsp;defined&amp;nbsp;includes&amp;nbsp;*/&lt;br /&gt;//&amp;nbsp;section&amp;nbsp;-64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-includes&amp;nbsp;begin&lt;br /&gt;//&amp;nbsp;section&amp;nbsp;-64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-includes&amp;nbsp;end&lt;br /&gt;&lt;br /&gt;/*&amp;nbsp;user&amp;nbsp;defined&amp;nbsp;constants&amp;nbsp;*/&lt;br /&gt;//&amp;nbsp;section&amp;nbsp;-64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-constants&amp;nbsp;begin&lt;br /&gt;//&amp;nbsp;section&amp;nbsp;-64--88-1-33--101592aa:11e3c5ee07c:-8000:0000000000000CB6-constants&amp;nbsp;end&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;Short&amp;nbsp;description&amp;nbsp;of&amp;nbsp;class&amp;nbsp;modelo_Carrito&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@access&amp;nbsp;private&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;Jaime&amp;nbsp;M.&amp;nbsp;Tan&amp;nbsp;Nozawa,&amp;nbsp;&amp;lt;jtnozawa@gmail.com&amp;gt;&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;modelo&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;class&amp;nbsp;modelo_Carrito&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;ASSOCIATIONS&amp;nbsp;---&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;generateAssociationEnd&amp;nbsp;:&amp;nbsp;conexion&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;ATTRIBUTES&amp;nbsp;---&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Short&amp;nbsp;description&amp;nbsp;of&amp;nbsp;attribute&amp;nbsp;cantidad&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@access&amp;nbsp;private&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;@var&amp;nbsp;int&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;$cantidad&amp;nbsp;=&amp;nbsp;0;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;nbsp;---&amp;nbsp;OPERATIONS&amp;nbsp;---&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Continuará... con multiplicidad, agregación/composición y generalización&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-3549772313023118071?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/3549772313023118071/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=3549772313023118071' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3549772313023118071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3549772313023118071'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/12/generando-cdigo-php-desde-uml.html' title='Generando código PHP desde UML'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_GXVCVN62pLc/SUcv7VHL6yI/AAAAAAAAAHs/iNmsRwN6HJY/s72-c/carrito.PNG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-3115206458234287921</id><published>2008-12-09T22:30:00.020-05:00</published><updated>2008-12-17T10:38:24.319-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RUP y UML con PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Herramientas Case PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='ArgoUML'/><category scheme='http://www.blogger.com/atom/ns#' term='BoUML PHP'/><title type='text'>UML y PHP: Herramientas Case</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2008 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;Después de haber analizado el negocio y haber realizado tus workflow de procesos, es hora de comenzar a diseñar (y analizar) la arquitectura de tu sistema.&lt;br /&gt;&lt;br /&gt;La gran pregunta para todo desarrollador y arquitecto de software que implementará en PHP sería: qué herramientas CASE dispongo, hay alguna libre... y éstas me generarán código PHP ? y código PHP 5 si pido mucho???&lt;br /&gt;&lt;br /&gt;Pues les listaré los que a los largo de estos años he podido testear:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://staruml.sourceforge.net/image/logo-staruml.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 219px; height: 80px;" src="http://staruml.sourceforge.net/image/logo-staruml.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 0);font-size:130%;" &gt;StarUML :&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;Interesante herramienta, es perfecta para la documentación usando la metodología RUP, los que vienen de utilizar Rational Rose, esta herramienta les parecerá ser un clon casi idéntico (inclusive en los colores). Tienes la posibilidad de crear íconos para tus estereotipos y crear tus propios profiles. (Digamos que puedo crear mi Profile para modelar para Zend Framework o un MVC propio más "abierto"). Su interfaz es ligera y agradable. utiliza UML 2.0.&lt;br /&gt;&lt;br /&gt;La generación de código para PHP 5:  &lt;span style="font-weight: bold;"&gt;intermedio&lt;/span&gt;   &lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;***&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Utiliza un método de "templates", en el cual uno puede inclusive modificar el código que generará. Detecta agregación y composición y genera automáticamente el atributo en la "clase cliente"&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desventaja :&lt;/span&gt;&lt;br /&gt;- Solo corre en Windows&lt;br /&gt;- El código generado "chanca" (sobre-escribe) el código anterior generado.&lt;br /&gt;- La generación de clases las crea sin tomar en cuenta el paquete donde se encuentra.&lt;br /&gt;- Puedes crear Diagramas E-R pero al final no genera nada de SQL.&lt;br /&gt;- No dispone de ingeniería reversa para PHP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(153, 51, 0);font-size:130%;" &gt;ArgoUML :&lt;/span&gt;&lt;a style="color: rgb(153, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.argouml-users.net/images/6/65/Splash.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 192px; height: 120px;" src="http://www.argouml-users.net/images/6/65/Splash.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;ArgoUML es una de esas joyitas libres hechas encajadas perfectas para  JAVA, por suerte estos últimos años ha tomado en cuenta a PHP  y su capacidad orientación a objetos y tenemos esta gran herramienta para PHP. &lt;span style="font-weight: bold; font-style: italic;"&gt;Ahh!!...Por cierto esta es la que uso.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;La generación de código para PHP 5:  &lt;span style="font-weight: bold;"&gt;Excelente   &lt;span style="font-size:130%;"&gt;***&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;**&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Tiene la capacidad de generar código PHP 5 y seguir desarrollando paralelamente (no chanca el código), dispone de unas etiquetas de comentario que evitan la sobre-escritura de métodos. La generación de código la realiza usando la técnica de clases de nombres largos:  presentacion_UCCcontrollers_gestionarPrestamo.php&lt;br /&gt;Aunque ya estamos a puertas de los namespaces de PHP 5.3 y PHP 6,  aún sigue siendo la única "forma simple" de dar pertenencia de una clase a una paquete.&lt;br /&gt;&lt;br /&gt;&gt;&gt; Corre en Linux y en Windows &lt;&lt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;Desventajas:&lt;/span&gt;&lt;br /&gt;- Es muy pesado y requiere de mucha memoria principal.&lt;br /&gt;- Sigue utilizando UML 1.4, la interfaz no es tan agadable ni dispone de íconos para reconocer los  estereotipos. (es un problema identificar mis clases controladoras con las de datos).&lt;br /&gt;- Aunque ha mejorado en la última versión, sigo creyendo que su "usabilidad" no es de lo mejor.&lt;br /&gt;- No dispone de Ingeniería reversa para PHP (si la sacan sería un GOL)&lt;br /&gt;- No detecta la composición. No es una desventaja pero te dá más trabajo en crear atributos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 51, 0);font-size:130%;" &gt;&lt;span style="font-weight: bold;"&gt;Bouml&lt;/span&gt;&lt;/span&gt;&lt;a style="color: rgb(153, 51, 0);" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bouml.free.fr/images/bouml_titre.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 162px; height: 47px;" src="http://bouml.free.fr/images/bouml_titre.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;BoUML fue una sorpresa después de haberlo testeado hace poco (y haberlo hecho hace 2 años veo su evolución), ahora ya tiene soporte TOTAL para PHP 5 y está orientado al programador. Está diseñado ,y te fuerza a usar la metodología RUP, por ejemplo no puedes crear un diagrama de clases en un "Use case View" donde solo se debe crear casos de uso.  Es ligero, usa UML 2.0  y tiene íconos para los estereotipos. Interesante  :)&lt;br /&gt;&lt;br /&gt;La generación de código para PHP 5:&lt;span style="font-weight: bold;"&gt; Excelente&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;   &lt;span style="font-size:130%;"&gt;***&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;**&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Tiene la capacidad de generar código PHP 5 y también seguir desarrollando paralelamente (no chanca el código), tiene un generador de métodos getter y setters (es lo mejor, me ahorro harto trabajo) e inclusive te genera código PHP5 en los métodos.&lt;br /&gt;&lt;br /&gt;Viene con un aplicativo para la gestion de proyecto colaborativo y la gestión de cambios en los diagramas que creamos. (excelente aportación)&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Tiene una opción de ingeniería reversa para PHP 5. Muy buena.&lt;/span&gt; (Con ésto hace este programa de los libres único por ahora)&lt;br /&gt;&lt;br /&gt;Detecta la asociación de composición , crea un atributo en la clase cliente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Desventajas:&lt;/span&gt;&lt;br /&gt;- El código aún no dispone de una técnica para dar pertenencia de una clase a un paquete, pero tal vez halla un truco por allí (que no he logrado modificar) para generar con técnica de "nombres largos" de clase.&lt;br /&gt;- No tiene un generador SQL para el modelo de datos.&lt;br /&gt;- &lt;strike&gt;Increible, no encontré otra desventaja.. jeje&lt;/strike&gt;&lt;br /&gt;- Otra desventaja es que a pesar que se puede poner el estilo de documentacion de PHPdocumentor no detecta los returnValue o los parámetros de un método para generarlos en el comentario. Es posible digitarlos manualmente pero sería muy laborioso&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Después hay otras herramientas como:  umbrello (&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;**&lt;/span&gt;&lt;/span&gt;) (su interfaz es básica y su generación de código también) y claro el Rational Rose (&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;**&lt;/span&gt;&lt;/span&gt;)... que podemos decir que es el mejor en RUP y UML ... PERO....&lt;br /&gt;para genera código PHP sólo conozco el PHP4Rose:  genera sólo codigo PHP 4 y es pésimo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(0, 0, 102);"&gt;CONCLUSIONES&lt;/span&gt;&lt;span style="color: rgb(0, 0, 102);"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;* Aplicaciones como Rational Rose para PHP está descartado (sin analizar el costo de licencias).&lt;br /&gt;* ArgoUML es bueno pero se requiere capacitación y mucha RAM en tu PC.&lt;br /&gt;* Ningúna herramienta Case propone aún los namespaces de PHP 5.3  ó  PHP6  y eso que está a la vuelta de la esquina.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;* A pesar de que aún utilizo ArgoUML, me empeñaré en seguir investigando el bouml que está demasiado interesante. Cuando bouml tenga la opción de cambiar el "formato de nombre de una clase" (o me digan como hacerlo) y disponga de la generación de un modelo de datos (SQL) estaremos frente a LA HERRAMIENTA case para PHP.&lt;br /&gt;&lt;br /&gt;Aún para mis proyectos seguiré usando ArgoUML y en mis tiempos libres seguir investigando boUML.&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-3115206458234287921?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/3115206458234287921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=3115206458234287921' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3115206458234287921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3115206458234287921'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/12/comendo-con-uml-y-php.html' title='UML y PHP: Herramientas Case'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-2264367917923074686</id><published>2008-12-09T22:07:00.006-05:00</published><updated>2008-12-10T00:11:37.684-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP retorno'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP experto'/><title type='text'>Retomando el Blog PHP experto</title><content type='html'>Tengo que pedir disculpas a los lectores de mi blog, que increiblemente con mi ausencia de POSTs, mi contador a incrementado considerablemente de visitas, y les agradezco enormemente.&lt;br /&gt;&lt;br /&gt;Para este retorno de revivir el blog crearé varias partes:&lt;br /&gt;&lt;br /&gt;* Analisis y Diseño OO : UML y RUP con PHP.&lt;br /&gt;* Arquitectura Orientada al Servicio SOA para PHP, BPEL y BPMN&lt;br /&gt;* Patrones de Diseño, capas de abstracción y SPL.&lt;br /&gt;* Frameworks (Zend Studio en especial).&lt;br /&gt;* SIG libre con PHP-mapscript (continuaré con los tutoriales ya avanzados).&lt;br /&gt;* Base de datos: PostgreSQL y PostGIS.&lt;br /&gt;* PHP 5.3 y PHP 6.&lt;br /&gt;* IDE's para PHP (Eclipse PDT y Netbeans, en especial).&lt;br /&gt;* Cursos y conferencias de PHP.&lt;br /&gt;&lt;br /&gt;También escribiré algunos artículos mezclando los conceptos de ingeniería de software y el SIG.&lt;br /&gt;Te haz preguntado porqué los SIG usualmente no se diseña en UML o utilizan un patrón de arquitectura como el MVC. Porqué los frameworks de PHP para Mapscript son usados como plantillas y no como "frameworks".&lt;br /&gt;Los WMS, WFS y WCS no es acaso una "arquitectura orientada al servicio" pero espacial, pero aún así no lo toman como son. (UNA ARQUITECTURA!!!)&lt;br /&gt;&lt;br /&gt;Espero sea de su interés los temas que postee y gracias nuevamente por sus visitas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-2264367917923074686?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/2264367917923074686/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=2264367917923074686' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2264367917923074686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2264367917923074686'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/12/retomando-el-blog-php-experto.html' title='Retomando el Blog PHP experto'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-1785559427550140407</id><published>2008-05-12T12:43:00.006-05:00</published><updated>2008-05-12T14:30:44.595-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php mapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='utp'/><category scheme='http://www.blogger.com/atom/ns#' term='conferencia'/><title type='text'>Fotos de la Conferencia en UTP</title><content type='html'>El 28 de abril se realizó la primera conferencia de la comunidad PHP perú.&lt;br /&gt;&lt;br /&gt;NOTA: por si acaso solo están las fotos correspondiente a mi expo... para mas detalles ver los links inferiores de todo el evento&lt;br /&gt;&lt;br /&gt;Aquí las fotos:&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_GXVCVN62pLc/SCiCLRuqkMI/AAAAAAAAAEg/zrreQdiDcQk/s1600-h/DSCN1427.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 189px; height: 141px;" src="http://bp1.blogger.com/_GXVCVN62pLc/SCiCLRuqkMI/AAAAAAAAAEg/zrreQdiDcQk/s200/DSCN1427.JPG" alt="" id="BLOGGER_PHOTO_ID_5199548900048539842" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Foto 1: Yo, comenzando a exponer (el burro por delante). Mi expo fue sobre PHP Mapscript por cierto&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_GXVCVN62pLc/SCiCdRuqkNI/AAAAAAAAAEo/brPFZq9lYk4/s1600-h/DSCN1420.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 210px; height: 154px;" src="http://bp1.blogger.com/_GXVCVN62pLc/SCiCdRuqkNI/AAAAAAAAAEo/brPFZq9lYk4/s200/DSCN1420.JPG" alt="" id="BLOGGER_PHOTO_ID_5199549209286185170" border="0" /&gt;&lt;/a&gt;Foto 2: Los chicos de rojo, la comunidad PHP perú y gente de Movile Bridges&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_GXVCVN62pLc/SCiDTxuqkOI/AAAAAAAAAEw/espW_7__1YY/s1600-h/UTP.PNG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://bp3.blogger.com/_GXVCVN62pLc/SCiDTxuqkOI/AAAAAAAAAEw/espW_7__1YY/s200/UTP.PNG" alt="" id="BLOGGER_PHOTO_ID_5199550145589055714" border="0" /&gt;&lt;/a&gt;Foto 3: Aquí me están dando mi presente recordatorio, eteeee, quien es quien ta a mi costado???&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://budix.com/Images/Members/phpperu/7796_thumb_500x390.JPG"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://budix.com/Images/Members/phpperu/7796_thumb_500x390.JPG" alt="" border="0" /&gt;&lt;/a&gt;Foto 4: El auditorio de UTP, si se fijan bien ---&gt; M. Lara ponchado sentado a la izquierda JEJE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Si quieren el PDF de la exposición lo pueden obtener &lt;a href="http://php.org.pe/index.php?topic=663.msg1566#msg1566"&gt;aquí.&lt;/a&gt;&lt;br /&gt;Mas fotos de la expo &lt;a href="http://budix.com/index.php5?Page=Album&amp;amp;AlbumId=3916&amp;amp;UserId=5942"&gt;aqui&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-1785559427550140407?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/1785559427550140407/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=1785559427550140407' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1785559427550140407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1785559427550140407'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/05/fotos-de-la-conferencia-en-utp.html' title='Fotos de la Conferencia en UTP'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_GXVCVN62pLc/SCiCLRuqkMI/AAAAAAAAAEg/zrreQdiDcQk/s72-c/DSCN1427.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-7505729408053186664</id><published>2008-04-21T18:09:00.004-05:00</published><updated>2008-04-24T17:50:27.700-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lima'/><category scheme='http://www.blogger.com/atom/ns#' term='utp'/><category scheme='http://www.blogger.com/atom/ns#' term='conferencia'/><category scheme='http://www.blogger.com/atom/ns#' term='seminario'/><category scheme='http://www.blogger.com/atom/ns#' term='mapserver'/><title type='text'>Conferencia PHP 2008 - Mapserver</title><content type='html'>Este es el primer evento que la Comunidad PHP Perú realiza, con el propósito de incentivar el uso y discusión de la herramienta PHP presentando aplicaciones reales desarrolladas e implementadas con el lenguaje PHP.&lt;br /&gt;&lt;br /&gt;REGISTRO EN LINEA:&lt;br /&gt;------------------&lt;br /&gt;&lt;a href="http://www.php.org.pe/registro_conferencia/registro.php"&gt;http://www.php.org.pe/registro_conferencia/registro.php&lt;/a&gt;&lt;br /&gt;---------------------&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Seminario PHP Lima 2008&lt;/b&gt;&lt;br /&gt;&lt;b&gt;Día: Lunes 28&lt;br /&gt;Hora: 17:30&lt;br /&gt;Lugar: Auditorio UTP&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;b&gt;Comunicaciones Móviles y PHP&lt;/b&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;li&gt;Expositor: Valentín Guardamino&lt;/li&gt;&lt;li&gt;Development Manager Soft Bridges Perú&lt;/li&gt;&lt;li&gt;Analista programador TSS- Perú&lt;/li&gt;&lt;li&gt;Ingeniero de Software – UPC&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Comunidad PHP y Budix.com&lt;/b&gt;&lt;br /&gt;Expositores:&lt;br /&gt;&lt;b&gt;Raúl Yamashiro &lt;/b&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;li&gt;Profesional Egresado de Cibertec.&lt;/li&gt;&lt;li&gt;Software Developer Comunidad PHP Perú.&lt;/li&gt;&lt;li&gt;Comunidad Budix.com.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Daniel Isla&lt;/b&gt;&lt;br /&gt;&lt;ul style="margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;li&gt;Bachiller Ingeniería Sistemas - UNMSM.&lt;/li&gt;&lt;li&gt;Software Developer Comunidad PHP Perú.&lt;/li&gt;&lt;li&gt;Comunidad Budix.com.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Recursos Microsoft para los desarrolladores PHP&lt;/b&gt;&lt;br /&gt;Expositor:&lt;br /&gt;&lt;b&gt;Speaker Microsoft Perú&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Mapas por Internet con PHP-Mapscript  de Mapserver&lt;/b&gt;&lt;br /&gt;Expositor:&lt;br /&gt;&lt;b&gt;Jaime M. Tan Nozawa&lt;/b&gt; (miembro del Foro PHP Perú)&lt;br /&gt;&lt;ul style="margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;li&gt;Desarrollador en PHP experiencia en Diseño objeto-relacional.&lt;/li&gt;&lt;li&gt;Consultor y analista de sistemas de información.&lt;/li&gt;&lt;li&gt;Experto en SIG Libre.&lt;/li&gt;&lt;li&gt;Experto en Redes Linux y Ms. Windows.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sistema de Rastreo y Localización Satelital &lt;/b&gt;&lt;br /&gt;Expositor:&lt;br /&gt;&lt;b&gt;Humberto Bejarano bravo&lt;/b&gt; (moderador del Foro PHP Perú)&lt;br /&gt;Algunos desarrllos:&lt;br /&gt;&lt;ul style="margin-top: 0pt; margin-bottom: 0pt;"&gt;&lt;li&gt;Sistema de Rastreo y Localización Satelital – Disatel Guatemala.&lt;/li&gt;&lt;li&gt;Juego 3D de Carreras INDY - Gattaca Colombia.&lt;/li&gt;&lt;li&gt;Sistema Transaccional de Aplicaciones Financieras via ATM's (Cajeros Automáticos).&lt;/li&gt;&lt;li&gt;Cajas Municipales Sullana, Huancayo.&lt;/li&gt;&lt;li&gt;Sistema de Consultas y Pagos Electrónicos, Telebanking - ScotiaBank Peru.&lt;/li&gt;&lt;li&gt;Simulador de Vuelo para Helicóptero MI-17.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Equipo PHP Perú.&lt;br /&gt;&lt;br /&gt;Mas información en:&lt;br /&gt;&lt;a href="http://php.org.pe/index.php?topic=631.msg1486#msg1486"&gt;&lt;br /&gt;&lt;/a&gt;&lt;/b&gt;&lt;a href="http://php.org.pe/index.php?topic=631.msg1486#msg1486"&gt;http://php.org.pe/index.php?topic=631.msg1486#msg1486&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.utp.edu.pe/ltv3/phpPeru.html"&gt;http://www.utp.edu.pe/ltv3/phpPeru.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-7505729408053186664?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/7505729408053186664/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=7505729408053186664' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/7505729408053186664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/7505729408053186664'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2008/04/conferencia-php-2008-mapserver.html' title='Conferencia PHP 2008 - Mapserver'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-5508950789157041902</id><published>2007-12-24T17:18:00.000-05:00</published><updated>2007-12-25T10:29:45.228-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php mapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='.map'/><category scheme='http://www.blogger.com/atom/ns#' term='punto map'/><category scheme='http://www.blogger.com/atom/ns#' term='mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='mapfile'/><title type='text'>PHP Mapscript Parte 3:  Trabajando con Mapserver sin MapFile  (.map)</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2007 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a travé&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:times new roman;font-size:85%;"  &gt;&lt;b&gt;s de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;En esta parte 3 del tutorial haremos algo interesante, trabajaremos SIN usar un Mapfile (.map). Como ya se habrán dado cuenta los datos se cargan según la configuración del .map que hemos estado trabajando últimamente, pero he visto que preguntan siempre  en los foros que siempre les parece algo rígido, tener que estar entrando a un archivo de texto para estar agregando capas o cambiándole el color. Con esta parte 3 de este tutorial, se te abrirán nuevas puertas y el horizonte como programador Web SIG, te darás cuenta que podemos, sin problemas pero con algo de tiempo, crear nuestra propia interfaz Web de administración del Mapserver (aunque ya existen proyectos de este tipo pero aún en desarrollo).&lt;br /&gt;&lt;br /&gt;Yo diría que el .map o Mapfile es como un "punto ini" (.ini). Ese significa que lo usamos para optimizar la velocidad del mapserver para poder cargar las capas &lt;span style="font-weight: bold; font-style: italic;"&gt;por defecto &lt;/span&gt;la primera vez que entran a nuestra aplicación, y una vez hecho ésto, los vamos modificando según nos convenga.&lt;br /&gt;&lt;br /&gt;Esta vez haremos algo simple, trataremos de hacer el tutorial #1  pero sin usar MapFile...&lt;br /&gt;&lt;br /&gt;Eso significa que intentaremos crear un mapa como SI EXISTIERA el siguiente MapFile:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;     LAYER&lt;br /&gt;NAME "Departamentos"&lt;br /&gt;STATUS ON&lt;br /&gt;DATA "Lim_dep.shp"&lt;br /&gt;TYPE POLYGON&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre style="font-family: courier new;"&gt;&lt;span&gt;          &lt;/span&gt;CLASS&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;   STYLE&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;COLOR 200 150 2&lt;br /&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;OUTLINECOLOR 0 0 0&lt;br /&gt;&lt;span&gt;          &lt;/span&gt;&lt;span&gt;     &lt;/span&gt;END&lt;br /&gt;&lt;span&gt;          &lt;/span&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;Este Mapfile que he puesto ES SOLO DE REFERENCIA y &lt;span style="font-weight: bold;"&gt;NO VA A SER UTILIZADO&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Aquí les pongo mi &lt;span style="font-weight: bold;"&gt;CÓDIGO EQUIVALENTE A LO ANTERIOR:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;b&gt;1 &amp;lt;?php&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// ejemplo01.php trabajando sin mapfile&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;  // Jaime M. Tan Nozawa   2007  Creative Co&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;  //Cargo la extensión MapScript  . Verificamos si la extensión ya está cargada por defecto.&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;extension_loaded&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"MapScript"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;))   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;dl&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'php_&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;mapscript.'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;PHP_SHLIB_SUFFIX&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// instanciamos un nuevo objeto: map object.&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newMapObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;10&lt;/b&gt;&lt;br /&gt;&lt;b&gt;11&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"name"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Pruebas"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;12&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"shapepath"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"C:/ms4w-php5/&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;carpetaDondeestantusShapes&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;/"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;&lt;br /&gt;&lt;b&gt;14&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setSize&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;600&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;400&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;15&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setExtent&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;87.9964&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;19.0216&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,-&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;63.114&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;1.19528&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;16&lt;/b&gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;&lt;br /&gt;&lt;b&gt;18&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;web&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"imagepath" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"C:/ms4w-php5/tmp/ms_tmp/" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;web&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"imageurl"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"/ms_tmp/" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;20&lt;/b&gt;&lt;br /&gt;&lt;b&gt;21&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Creamos un Layer dentro de nuestro MapObj y seteamos sus propiedades&lt;br /&gt;&lt;b&gt;22&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newLayerObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;23&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"name"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Departamentos"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;24&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"type"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;MS_LAYER_POLYGON&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;25&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"status"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;MS_ON&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;26&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"data"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Lim_dep.shp"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;27&lt;/b&gt;&lt;br /&gt;&lt;b&gt;28&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//Creamos un classObj dentro del LayerObj&lt;br /&gt;&lt;b&gt;29&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jClass &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newClassObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;30&lt;/b&gt;&lt;br /&gt;&lt;b&gt;31&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;//Creamos un styleObj dentro del classObj&lt;br /&gt;&lt;b&gt;32&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jStyle &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newStyleObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;33&lt;/b&gt;&lt;br /&gt;&lt;b&gt;34&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jStyle&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;color&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setRGB&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;200&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;150&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;2&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;35&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jStyle&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;outlinecolor&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setRGB&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;36&lt;/b&gt;&lt;br /&gt;&lt;b&gt;37&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;draw&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;38&lt;/b&gt;&lt;br /&gt;&lt;b&gt;39&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Creamos y capturamos la ruta de imagen renderizada.&lt;br /&gt;&lt;b&gt;40&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;saveWebImage&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;41&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;span&gt;1) MapObj&lt;br /&gt;En este caso, la creación del MapObj se realiza sin pasarle un parámetro, de esta forma no cargamos ningún .map:&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&lt;br /&gt;$jMap &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newMapObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;""&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;Además hay un objeto que ahora lo configuro "al vuelo" es el objeto &lt;span style="font-weight: bold;"&gt;Web&lt;/span&gt;. Este objeto Web no tienes que instanciarlo, ya está creado automáticamente al crear un MapObj por eso ingreso las propiedades de frente:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;18&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;web&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"imagepath" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"C:/ms4w-php5/tmp/ms_tmp/" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;web&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;( &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"imageurl"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;, &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"/ms_tmp/" &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span&gt;Otra propiedad NUEVA es  SHAPEPATH. Esta propiedad es necesaria para poder hacer más fácil las cosas y no estar poniéndole toda la ruta cada vez que agregamos un layer y hacemos referencia a la ubicación del shapefiel. (fíjate en la propiedad DATA del Layer, ya no pongo rutas largas)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;12&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;set&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"shapepath"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;,&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"C:/ms4w-php5/carpetaDondeestantusShapes/"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;br /&gt;Fíjate claramente como voy ingresando las propiedades,  siempre con el método "set" para cualquier objeto dentro del Map:&lt;br /&gt;&lt;/span&gt;&lt;pre class="literal-block"&gt;int set(string propertiedad, valor)&lt;/pre&gt;con el set podemos modificar casi todas las propiedades de los objetos (a menos que tenga una especializada para una propiedad específica) . Si retorna un valor -1, significa error.&lt;br /&gt;&lt;br /&gt;&lt;span&gt;2) Objetos dentro del MAP&lt;/span&gt;&lt;br /&gt;Cuando creo un layer dentro del MapObj necesariamente, al instanciarlo, tengo que pasarle el objeto al cual va a ser parte. En este caso creo una capa LayerObj que se encontrará dentro de un MapObj:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newLayerObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;  Igual para el class o para el style .. que están contenidos siempre dentro de un objeto mayor&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;b&gt;29&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jClass &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newClassObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jLayer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;br /&gt;&lt;b&gt;32&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jStyle &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newStyleObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;3) Contantes:&lt;br /&gt;Además de todo lo anterior, se han usado unas nuevas contantes. Para nuestro caso la constante de tipos de Layers. En nuestro ejemplo el tipo polígono.&lt;br /&gt;Otros posibles valores son:&lt;br /&gt;&lt;pre class="literal-block"&gt;MS_LAYER_POINT, MS_LAYER_LINE, MS_LAYER_POLYGON, MS_LAYER_RASTER, MS_LAYER_ANNOTATION&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;El último tipo, hace referencia a una capa de anotaciones.&lt;br /&gt;Algunas veces deseamos etiquetar solamente o sino poner&lt;br /&gt;íconos , logos para adornar o facilitar la comprensión, ETC.&lt;span style="font-family:monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Georgia,serif;"&gt;&lt;/span&gt;&lt;/pre&gt;----&lt;br /&gt;Bueno eso es todo, no pongo resultados porque sería el mismo que el de la parte 1. Pueden ustedes probar cambiar cualquiera de las propiedades pasándole parámetros GET o usando SESIONES. O mejor aún, hacemos una interfaz simple para configurar las propiedades. Bueno ya todo está en tu imaginación.&lt;br /&gt;Para acabar siempre con una imagen , aquí les dejo un gráfico explicativo del .map (extraído del Libro &lt;a href="http://www.oreilly.com/catalog/webmapping/"&gt;WebMapping&lt;/a&gt;) que lo encontré navegando dentro del preview del libro.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;disfrútenlo... y no olviden escribir y postear sus comentarios.&lt;br /&gt;&lt;pre&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.oreilly.com/catalog/webmapping/figs/I_14_tt275.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 246px; height: 366px;" src="http://www.oreilly.com/catalog/webmapping/figs/I_14_tt275.png" alt="" border="0" /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;--NOTA de ACTUALIZACIÓN--&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;RETO DEL TUTORIAL: Recrear el mapa del tutorial parte 2 pero sin usar un MapFile.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-5508950789157041902?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/5508950789157041902/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=5508950789157041902' title='11 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/5508950789157041902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/5508950789157041902'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/12/php-mapscript-parte-3-trabajando-con.html' title='PHP Mapscript Parte 3:  Trabajando con Mapserver sin MapFile  (.map)'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-1758734316714539666</id><published>2007-12-20T11:12:00.000-05:00</published><updated>2007-12-20T14:50:36.064-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php mapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='sig'/><category scheme='http://www.blogger.com/atom/ns#' term='mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='sig libre'/><title type='text'>PHP-Mapscript de Mapserver. Parte 2: Volviendo dinámico el MapFile (Continuación)</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2007 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;pre id="line1"&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;b&gt;1&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Obtenemos las capas&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jCapas&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getAllLayerNames&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layersOn &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= array();&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;    foreach (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jCapas &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;as &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$idx &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getLayerByName&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;&lt;br /&gt;&lt;b&gt;10&lt;/b&gt;         if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;status&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;MS_ON&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;b&gt;11&lt;/b&gt;            echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"** CAPA :{$capaObj-&amp;gt;name} **&amp;lt;ul&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;12&lt;/b&gt;&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;                     for(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;++){&lt;br /&gt;&lt;b&gt;14&lt;/b&gt;                     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$Class &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;15&lt;/b&gt;                         echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&amp;lt;li&amp;gt;CLASS:&lt;br /&gt;&lt;b&gt;16&lt;/b&gt;                               &amp;lt;ul&amp;gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;                              &amp;lt;li&amp;gt;NOMBRE CLASS: {$Class-&amp;gt;name}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;18&lt;/b&gt;                              &amp;lt;li&amp;gt;EXPRESION: {$Class-&amp;gt;getExpression()}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;                              &amp;lt;li&amp;gt;COLOR: {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;red} {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;green} {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;blue}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;20&lt;/b&gt;                                          &amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;21&lt;/b&gt;                                        "&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;22&lt;/b&gt;&lt;br /&gt;&lt;b&gt;23&lt;/b&gt;                                  }&lt;br /&gt;&lt;b&gt;24&lt;/b&gt;&lt;br /&gt;&lt;b&gt;25&lt;/b&gt;             echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&amp;lt;/ul&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;26&lt;/b&gt;           }&lt;br /&gt;&lt;b&gt;27&lt;/b&gt;&lt;br /&gt;&lt;b&gt;28&lt;/b&gt;   }&lt;br /&gt;&lt;b&gt;29&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Explicación ...&lt;br /&gt;&lt;br /&gt;a) $jCapas=$jMap-&gt;getAllLayerNames();&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Con el método (clase MapObj) getAllLayerNames obtenemos un array ($jCapas) en el cual dispondremos los nombres de cada capa (Layers) de nuestro MapFile. Por tanto haciendo un foreach haríamos un recorrido del array:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;foreach ($jCapas as $idx =&gt; $layer)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;b) Objeto LayerObj&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$capaObj=$jMap-&gt;getLayerByName($layer);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Con el método (clase MapObj) getLayerByName obtenemos un objeto LayerObj($capaObj) a partir de su parámetro donde ingresas el nombre de la capa. Como ya hemos conseguido los nombres de cada capa a través del método anterior entonces no tenemos problemas. En otras palabras, el foreach anterior recorre capa a capa, y este método obtiene el objeto LayerObj (Ver Cuadro del tutorial parte 1).&lt;br /&gt;&lt;br /&gt;La propiedad&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$capaObj-&gt;status&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:100%;"&gt;obtiene en sí el estado de la capa , ON/OFF/DEFAULT. Los valores en el mapscript son contantes de entorno de la API. En este caso puede obtener los valores: &lt;/span&gt;&lt;/span&gt;MS_ON, MS_OFF, MS_DEFAULT.&lt;br /&gt;&lt;br /&gt;Existen otras contantes booleanas que se usan en otras situaciones: MS_TRUE, MS_FALSE, MS_YES, MS_NO&lt;br /&gt;&lt;br /&gt;Más Propiedades:&lt;br /&gt;&lt;br /&gt;$capaObj-&gt;name     : El nombre de la capa (String)&lt;br /&gt;$capaObj-&gt;transparency    : Transparencia de la capa (Int)&lt;br /&gt;$capaObj-&gt;maxscale     : Escala máxima de visualización (double)&lt;br /&gt;$capaObj-&gt;minscale     : Escala mínima de visualización (double)&lt;br /&gt;$capaObj-&gt;classitem  : Cadena classitem que se explicó al inicio(string)&lt;br /&gt;&lt;br /&gt;Y así todas las propiedades que puedes agregar en el MapFile&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;c) Objeto ClassObj&lt;br /&gt;&lt;br /&gt;Cada Objeto LayerObj puede tener muchos Objetos ClassObj dentro,pero siempre al menos uno. El ClassObj sirve para categorizar nuestra capa por filtros según el campo del CLASSITEM y filtrado con el EXPRESSION. Si se omite el EXPRESSION significa que solo había un único ClassObj.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$Class = $capaObj-&gt;getClass($i)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;En nuestra caso estoy usando el método getClass (de la clase ObjLayer) que te retorna una objeto ClassObj que se almacena en la variable $Class. El $i es un número entero que debe representar que CLASS nos referimos. Cero (0) sería el primer class y obligatorio pues todo Layer debe tener siempre un Class.&lt;br /&gt;Para variar ahora no usé foreach sino un for para hacer el recorrido.&lt;br /&gt;&lt;br /&gt;Más propiedades del objeto ClassObj:&lt;br /&gt;&lt;br /&gt;$Class-&gt;name :  Nombre de la clase&lt;br /&gt;&lt;br /&gt;Más métodos del objeto ClassObj:&lt;br /&gt;&lt;br /&gt;$Class-&gt;getExpression()   :  Retorna un String que obtiene el FILTRO a usar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;d) styleObj&lt;br /&gt;&lt;br /&gt;Este objeto puedes definir el color de background; grosor y color lineas;tamaño de fuente; etc...&lt;br /&gt;&lt;br /&gt;Yo estoy en este caso usando&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$Class-&gt;getStyle(0)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Método de la clase ClassObj que obtiene un objeto styleObj. Debido a que siempre he usado&lt;br /&gt;un solo Style por Layer pongo el número 0 , pero si hubiera más habrían números correlativos&lt;br /&gt;&lt;br /&gt;Propiedades:&lt;br /&gt;&lt;br /&gt;$Class-&gt;getStyle(0)-&gt;color   :  Propiedad que contine el Objeto colorObj.&lt;br /&gt;Este objeto color tiene propiedades RGB (red,green,blue)&lt;br /&gt;&lt;br /&gt;$Class-&gt;getStyle(0)-&gt;backgroundcolor  : Color del fondo (colorObj)&lt;br /&gt;$Class-&gt;getStyle(0)-&gt;outlinecolor  : color del borde del CLASS (colorObj)&lt;br /&gt;$Class-&gt;getStyle(0)-&gt;size   : Tamaño de la fuente (int)&lt;br /&gt;&lt;br /&gt;Es todo para ese código anterior, ¿fácil?&lt;br /&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;4. &lt;/span&gt;&lt;/span&gt;Modificando las propiedades&lt;br /&gt;&lt;br /&gt;Comencemos con algo simple, modifiquemos el extent del mapa&lt;br /&gt;(hacemos un aparente zoom) y el color de un Class de un layer:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre id="line1"&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;b&gt;1&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// ejemplo02.php&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;  // Jaime M. Tan Nozawa&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;  //Cargo la extensión MapScript  . Verificamos si la extensión ya está cargada por defecto.&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;extension_loaded&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"MapScript"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;))   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;dl&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'php_mapscript.'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;PHP_SHLIB_SUFFIX&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// instanciamos un nuevo objeto: map object. El constructor debe recibir al menos el parámetro de la ubicación del archivo .map&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newMapObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"ejemplo01.map"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;10&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;b&gt;11&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setExtent(-80.17494,-14.0216,-72.93546,-9.19528)&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;12&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jColor &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getLayerByName('Departamentos')&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getClass(0)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getStyle(0)&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;color;&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;br /&gt;&lt;b&gt;14&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;b&gt;15&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jColor&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;setRGB(100,150,120);&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;16&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;draw&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;18&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Creamos y capturamos la ruta de imagen renderizada.&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;saveWebImage&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;span style="font-family:mon;"&gt;&lt;span style="font-weight: bold;"&gt;20&lt;/span&gt;&lt;/span&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;$jMap-&gt;setExtent(-80.17494,-14.0216,-72.93546,-9.19528) ;&lt;br /&gt;&lt;br /&gt;En este caso estamos usando el método setExtent para MODIFICAR&lt;br /&gt;el extent del mapa y por tanto hacemos un zoom hacia una región&lt;br /&gt;obteniendo las coordenadas de los puntos extremos.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;setExtent(double minx, double miny, double maxx, double maxy)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Con las sieguiente línea:&lt;br /&gt;&lt;span style="font-style: italic;"&gt;$jColor =$jMap-&gt;getLayerByName('Departamentos')-&gt;getClass(0)-&gt;getStyle(0)-&gt;color;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Como se explicó antes he obtenido la propiedad colorObj&lt;br /&gt;del estilo 0, de la clase 0, de la capa llamada 'Departamentos' de objeto Map.&lt;br /&gt;&lt;br /&gt;Una vez hecho esto MODIFICARE el color de ese STYLE:&lt;br /&gt;&lt;br /&gt;$jColor-&gt;setRGB(100,150,120 );&lt;br /&gt;&lt;br /&gt;Más adelante estaré trabajando en un tutorial más interesante,&lt;br /&gt;que lo llamaré:  &lt;span style="font-weight: bold;font-size:130%;" &gt;Mapserver sin MapFile (.map)&lt;/span&gt;&lt;span style="font-size:130%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;@__ @&lt;br /&gt;&lt;br /&gt;Resultado:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_GXVCVN62pLc/R2qRS1ymr2I/AAAAAAAAADA/6dK6IFTGkpg/s1600-h/resultado.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_GXVCVN62pLc/R2qRS1ymr2I/AAAAAAAAADA/6dK6IFTGkpg/s320/resultado.JPG" alt="" id="BLOGGER_PHOTO_ID_5146085277087215458" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-1758734316714539666?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/1758734316714539666/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=1758734316714539666' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1758734316714539666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1758734316714539666'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/12/php-mapscript-de-mapserver-parte-2.html' title='PHP-Mapscript de Mapserver. Parte 2: Volviendo dinámico el MapFile (Continuación)'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_GXVCVN62pLc/R2qRS1ymr2I/AAAAAAAAADA/6dK6IFTGkpg/s72-c/resultado.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-3818106096927680666</id><published>2007-11-15T01:02:00.000-05:00</published><updated>2007-12-20T11:15:14.978-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php mapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='sig'/><category scheme='http://www.blogger.com/atom/ns#' term='mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='sig libre'/><title type='text'>PHP-Mapscript de Mapserver. Parte 2: Volviendo dinámico el MapFile</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2007 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.giulianoweb.com.br/gweb/images/Tecnology/phpmapscript.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 65px; height: 39px;" src="http://www.giulianoweb.com.br/gweb/images/Tecnology/phpmapscript.jpg" alt="" border="0" /&gt;&lt;/a&gt;En esta segunda parte del tutorial intentaremos hacer más dinámico nuestro MapFile (.map). Como vimos en la parte 1, pudimos crear un archivo de configuración inicial y cargar los datos que se mencionan en el contenido del archivo. Ahora queremos capturar los datos(propiedades) y modificar los datos que se encuentran dentro del archivo; claro, sin tener  que entrar al .map para realizar un cambio, sino sólo realizándolo por código.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;1. &lt;/span&gt;&lt;/span&gt;Primero el .map quedará como el siguiente para hacerlo más interesante:&lt;br /&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;#Inicio mapfile&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style="font-size:85%;"&gt;MAP&lt;br /&gt;NAME Pruebas&lt;br /&gt;SIZE 600 400&lt;br /&gt;EXTENT -87.9964 -19.0216 -63.114 1.19528&lt;br /&gt;&lt;br /&gt;WEB&lt;br /&gt;IMAGEPATH "C:/ms4w-php5/tmp/ms_tmp/"  #Esto puede variar segun tu configuracion&lt;br /&gt;IMAGEURL "/ms_tmp/"&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LAYER&lt;br /&gt;NAME "Departamentos"&lt;br /&gt;STATUS ON&lt;br /&gt;DATA "Lim_dep.shp"&lt;br /&gt;TYPE POLYGON&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;CLASSITEM Nom_Dep&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;CLASS&lt;br /&gt;NAME "LIMA"&lt;br /&gt;EXPRESSION /LIMA/&lt;br /&gt;STYLE&lt;br /&gt;COLOR 200 150 2&lt;br /&gt;OUTLINECOLOR 200 200 200&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;CLASS&lt;br /&gt;NAME "OTROS"&lt;br /&gt;EXPRESSION /.*/&lt;br /&gt;STYLE&lt;br /&gt;COLOR 100 28 55&lt;br /&gt;OUTLINECOLOR 0 0 0&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;END&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:verdana;font-size:85%;"  &gt;#Fin mapfile&lt;/span&gt;&lt;/pre&gt;Como nos percatamos ahora he agregado nuevas opciones (en negrita) de nuestro mapfile inicial.&lt;br /&gt;&lt;br /&gt;Nuetra objeto layer ahora dispone de una propiedad más:&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;CLASSITEM Nom_Dep   &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;con él podemos escoger un campo dentro de la tabla, en este caso Nom_dep, para poder hacer algunas búsqueda y filtrar o segmentar según diferentes criterios.&lt;br /&gt;&lt;br /&gt;En nuestro objeto CLASS que se encuentra dentro de LAYER ahora dispone de más propiedades:&lt;br /&gt;&lt;pre&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt; &lt;span style="font-size:85%;"&gt;CLASS&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;NAME "LIMA"&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        EXPRESSION /LIMA/&lt;/span&gt;&lt;br /&gt;STYLE&lt;br /&gt;COLOR 200 150 2&lt;br /&gt;OUTLINECOLOR 200 200 200&lt;br /&gt;END&lt;br /&gt;END&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;En este caso estoy poniéndole un nombre a ese CLASS : LIMA , y el filtro se hace según una &lt;a href="http://es.wikipedia.org/wiki/Expresi%C3%B3n_regular#Las_expresiones_regulares_en_programaci.C3.B3n"&gt;expresión regular&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;en este caso /LIMA/   osea busca dentro de la columna Nom_dep  todas los registros que contienen la palabra" LIMA".&lt;br /&gt;&lt;br /&gt;En el otro STYLE denominado OTROS , la expresión regular&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;  /.*/  significa uno o más caracteres. En otras palabras todas los restantes. y fíjense que cada CLASS se colorea con colores diferentes tanto sus bordes como el contenido.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;2. &lt;/span&gt;&lt;/span&gt;Ahora procederemos a agregar más lineas en nuestro Ejemplo01.php y lo renombraremos a&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;font-family:courier new;" &gt;ejemplo02.php&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre id="line1"&gt;&lt;span class="comment"&gt; &lt;code&gt;&lt;b&gt;1&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// ejemplo02.php&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;  // Jaime M. Tan Nozawa&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;  //Cargo la extensión MapScript  . Verificamos si la extensión ya está cargada por defecto.&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;extension_loaded&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"MapScript"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;))   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;dl&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'php_mapscript.'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;PHP_SHLIB_SUFFIX&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// instanciamos un nuevo objeto: map object. El constructor debe recibir al menos el parámetro de la ubicación del archivo .map&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newMapObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"ejemplo01.map"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;10&lt;/b&gt;&lt;br /&gt;&lt;b&gt;11&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Renderización&lt;br /&gt;&lt;b&gt;12&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;draw&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;&lt;br /&gt;&lt;b&gt;14&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Creamos y capturamos la ruta de imagen renderizada.&lt;br /&gt;&lt;b&gt;15&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;saveWebImage&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;16&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;  &lt;/span&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&lt;b&gt;18&lt;/b&gt;     &amp;lt;HEAD&amp;gt;&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;  &amp;lt;TITLE&amp;gt;Ejemplo 1&amp;lt;/TITLE&amp;gt;&lt;br /&gt;&lt;b&gt;20&lt;/b&gt;  &amp;lt;/HEAD&amp;gt;&lt;br /&gt;&lt;b&gt;21&lt;/b&gt;  &amp;lt;BODY&amp;gt;&lt;br /&gt;&lt;b&gt;22&lt;/b&gt;  &amp;lt;IMG SRC=&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;/span&gt;  &amp;gt;&lt;br /&gt;&lt;b&gt;23&lt;/b&gt;  &amp;lt;br&amp;gt;&lt;br /&gt;&lt;b&gt;24&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;25&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Obtenemos Propiedades del MapaObj llamado jMap&lt;br /&gt;&lt;b&gt;26&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Nombre mapa: {$jMap-&amp;gt;name}&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;27&lt;/b&gt;  echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Extent mapa: {$jMap-&amp;gt;extent-&amp;gt;minx} // {$jMap-&amp;gt;extent-&amp;gt;miny} // {$jMap-&amp;gt;extent-&amp;gt;maxx} // {$jMap-&amp;gt;extent-&amp;gt;maxy} &amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;28&lt;/b&gt;  echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Tama&amp;amp;ntilde;o imagen: {$jImagen-&amp;gt;width} {$jImagen-&amp;gt;height}&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;29&lt;/b&gt;  echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"Escala:  1/{$jMap-&amp;gt;scale}&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;30  &lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// &lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;echo&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="comment"&gt; ms_GetVersion()&lt;/span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;/code&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;&lt;b&gt;31&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;br /&gt;&lt;b&gt;32&lt;/b&gt;  &lt;/span&gt;&amp;lt;/BODY&amp;gt;&lt;br /&gt;&lt;b&gt;33&lt;/b&gt;  &amp;lt;/HTML&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;Vemos claramente como podemos acceder a las propiedades del MapObj:   $jMap&lt;br /&gt;&lt;br /&gt;$jMap-&gt;name         :  propiedad nombre del object  MapObject&lt;br /&gt;$jImagen-&gt;width   : ancho de la imagen en pixels&lt;br /&gt;$jMap-&gt;extent-&gt;miny     (minx) (maxx) (maxy)   para capturar extent del mapa&lt;br /&gt;La escala no está es muy buena proporción por que se esta usando coordenadas geodésicas (no obtiene áreas)&lt;br /&gt;en próximos tutoriales veremos como corregir esta opción.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;3. &lt;/span&gt;&lt;/span&gt;Ahora que ya mas o menos conocen los objetos y las propiedades , les dejo algo de código interesante para que lo analicen:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre id="line1"&gt;&lt;span class="comment"&gt; &lt;code&gt;&lt;b&gt;1&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Obtenemos las capas&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jCapas&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getAllLayerNames&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layersOn &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= array();&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;    foreach (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jCapas &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;as &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$idx &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&amp;gt; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;       &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getLayerByName&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$layer&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;&lt;br /&gt;&lt;b&gt;10&lt;/b&gt;         if (&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;status&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;==&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;MS_ON&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;) {&lt;br /&gt;&lt;b&gt;11&lt;/b&gt;            echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"** CAPA :{$capaObj-&amp;gt;name} **&amp;lt;ul&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;12&lt;/b&gt;&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;                     for(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;=&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;0&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;++){&lt;br /&gt;&lt;b&gt;14&lt;/b&gt;                     &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$Class &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$capaObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;getClass&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$i&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;15&lt;/b&gt;                         echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&amp;lt;li&amp;gt;CLASS:&lt;br /&gt;&lt;b&gt;16&lt;/b&gt;                               &amp;lt;ul&amp;gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;                              &amp;lt;li&amp;gt;NOMBRE CLASS: {$Class-&amp;gt;name}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;18&lt;/b&gt;                              &amp;lt;li&amp;gt;EXPRESION: {$Class-&amp;gt;getExpression()}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;                              &amp;lt;li&amp;gt;COLOR: {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;red} {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;green} {$Class-&amp;gt;getStyle(0)-&amp;gt;color-&amp;gt;blue}&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;20&lt;/b&gt;                                          &amp;lt;/ul&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;&lt;b&gt;21&lt;/b&gt;                                        "&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;22&lt;/b&gt;&lt;br /&gt;&lt;b&gt;23&lt;/b&gt;                                  }&lt;br /&gt;&lt;b&gt;24&lt;/b&gt;&lt;br /&gt;&lt;b&gt;25&lt;/b&gt;             echo &lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"&amp;lt;/ul&amp;gt;"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;;&lt;br /&gt;&lt;b&gt;26&lt;/b&gt;           }&lt;br /&gt;&lt;b&gt;27&lt;/b&gt;&lt;br /&gt;&lt;b&gt;28&lt;/b&gt;   }&lt;br /&gt;&lt;b&gt;29&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;span class="comment"&gt;&lt;code&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;/span&gt;Resultado:&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_GXVCVN62pLc/RzybphyKQeI/AAAAAAAAAB8/7sFOupXDP4I/s1600-h/Dibujo.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_GXVCVN62pLc/RzybphyKQeI/AAAAAAAAAB8/7sFOupXDP4I/s320/Dibujo.JPG" alt="" id="BLOGGER_PHOTO_ID_5133148813041222114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;continuará...&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-3818106096927680666?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/3818106096927680666/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=3818106096927680666' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3818106096927680666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/3818106096927680666'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/11/php-mapscript-de-mapserver-parte-2.html' title='PHP-Mapscript de Mapserver. Parte 2: Volviendo dinámico el MapFile'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_GXVCVN62pLc/RzybphyKQeI/AAAAAAAAAB8/7sFOupXDP4I/s72-c/Dibujo.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-653318451323508635</id><published>2007-11-05T11:32:00.000-05:00</published><updated>2008-01-05T00:25:59.859-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='php mapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='punto map'/><category scheme='http://www.blogger.com/atom/ns#' term='sig'/><category scheme='http://www.blogger.com/atom/ns#' term='mapserver'/><category scheme='http://www.blogger.com/atom/ns#' term='sig libre'/><title type='text'>PHP-Mapscript de Mapserver. Parte 1: Conceptos</title><content type='html'>&lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;&lt;img alt="Creative Commons License" style="border-width: 0pt;" src="http://creativecommons.org/images/public/somerights20.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p   style="text-indent: 0pt; text-align: left;font-family:arial;font-size:8pt;"&gt;&lt;span style="font-size:100%;"&gt; Esta &lt;/span&gt;&lt;span dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" rel="dc:type"  style="font-size:100%;"&gt;obra&lt;/span&gt;&lt;span style="font-size:100%;"&gt; está bajo una &lt;a rel="license" href="http://creativecommons.org/licenses/by/3.0/"&gt;licencia de Creative Commons&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;span style=";font-family:times new roman;font-size:85%;"  &gt;© 2007 Jaime M. Tan Nozawa. Usted es libre de copiar, distribuir y comunicar públicamente la obra y hacer obras derivadas bajo las condiciones siguientes: a) Debe reconocer y citar al autor original. &lt;b&gt;b) No puede utilizar esta obra para fines comerciales (incluyendo su publicación, a través de cualquier medio, por entidades con fines de lucro).&lt;/b&gt; c) Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. Al reutilizar o distribuir la obra, tiene que dejar bien claro los términos de la licencia de esta obra. Alguna de estas condiciones puede no aplicarse si se obtiene el permiso del titular de los derechos de autor. Los derechos derivados de usos legítimos u otras limitaciones no se ven afectados por lo anterior. Licencia completa en &lt;a href="http://creativecommons.org/licenses/by-nc-sa/2.1/es/legalcode.es"&gt;castellano&lt;/a&gt;. La información contenida en este documento y los derivados de éste se proporcionan tal cual son y los autores no asumirán responsabilidad alguna si el usuario o lector hace mal uso de éstos.&lt;/span&gt;&lt;p style="font-size: 7px; text-indent: 0pt; text-align: justify;"&gt;&lt;big&gt;&lt;big&gt;&lt;big&gt;&lt;br /&gt;&lt;/big&gt;&lt;/big&gt;&lt;/big&gt;&lt;/p&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="spnMessageText"&gt;&lt;span style="font-weight: bold;"&gt;¿Qué es MapServer?&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www2.dmsolutions.on.ca/mapserver/logo/mapserver_200_fc_w.gif"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 199px; height: 118px;" src="http://www2.dmsolutions.on.ca/mapserver/logo/mapserver_200_fc_w.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="spnMessageText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;b&gt;MapServer&lt;/b&gt; es un entorno de desarrollo en &lt;a href="http://es.wikipedia.org/wiki/C%C3%B3digo_abierto" title="Código abierto"&gt;código abierto&lt;/a&gt; (&lt;a href="http://es.wikipedia.org/wiki/Open_Source_Initiative" title="Open Source Initiative"&gt;Open Source Initiative&lt;/a&gt;) para la creación de aplicaciones &lt;a href="http://es.wikipedia.org/wiki/SIG" title="SIG"&gt;SIG&lt;/a&gt; en &lt;a href="http://es.wikipedia.org/wiki/Internet" title="Internet"&gt;Internet&lt;/a&gt;/&lt;a href="http://es.wikipedia.org/wiki/Intranet" title="Intranet"&gt;Intranet&lt;/a&gt; con el fin de visualizar, consultar y analizar &lt;a href="http://es.wikipedia.org/wiki/Informaci%C3%B3n_geogr%C3%A1fica" title="Información geográfica"&gt;información geográfica&lt;/a&gt; a través de la red mediante la tecnología &lt;a href="http://es.wikipedia.org/w/index.php?title=Internet_Map_Server&amp;amp;action=edit" class="new" title="Internet Map Server"&gt;Internet Map Server&lt;/a&gt; (IMS).   &lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;Sus características principales son:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Se ejecuta bajo plataformas &lt;a href="http://es.wikipedia.org/wiki/Linux" title="Linux"&gt;Linux&lt;/a&gt;/&lt;a href="http://es.wikipedia.org/wiki/Servidor_HTTP_Apache" title="Servidor HTTP Apache"&gt;Apache&lt;/a&gt; y &lt;a href="http://es.wikipedia.org/wiki/Windows" title="Windows"&gt;Windows&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Formatos vectoriales soportados: &lt;a href="http://es.wikipedia.org/wiki/ESRI" title="ESRI"&gt;ESRI&lt;/a&gt; &lt;a href="http://es.wikipedia.org/wiki/Shapefile" title="Shapefile"&gt;shapefiles&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/PostGIS" title="PostGIS"&gt;PostGIS&lt;/a&gt;, ESRI ArcSDE, &lt;a href="http://es.wikipedia.org/wiki/Geography_Markup_Language" title="Geography Markup Language"&gt;GML&lt;/a&gt; y otros muchos vía &lt;a href="http://es.wikipedia.org/w/index.php?title=OGR&amp;amp;action=edit" class="new" title="OGR"&gt;OGR&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Formatos raster soportados: &lt;a href="http://es.wikipedia.org/wiki/JPG" title="JPG"&gt;JPG&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/PNG" title="PNG"&gt;PNG&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/GIF" title="GIF"&gt;GIF&lt;/a&gt;, &lt;a href="http://es.wikipedia.org/wiki/TIFF" title="TIFF"&gt;TIFF&lt;/a&gt;/&lt;a href="http://es.wikipedia.org/wiki/GeoTIFF" title="GeoTIFF"&gt;GeoTIFF&lt;/a&gt;, EPPL7 y otros vía &lt;a href="http://es.wikipedia.org/w/index.php?title=GDAL&amp;amp;action=edit" class="new" title="GDAL"&gt;GDAL&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Fuentes &lt;a href="http://es.wikipedia.org/wiki/TrueType" title="TrueType"&gt;TrueType&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Configuración "al vuelo" vía &lt;a href="http://es.wikipedia.org/wiki/URL" title="URL"&gt;URL&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: right;"&gt;&lt;span style="font-size:85%;"&gt;Fuente: wikipedia&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="spnMessageText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.giulianoweb.com.br/gweb/images/Tecnology/phpmapscript.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 79px; height: 47px;" src="http://www.giulianoweb.com.br/gweb/images/Tecnology/phpmapscript.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="spnMessageText"&gt;&lt;span style="font-weight: bold;"&gt;¿Qué es PHP/Mapscript? &lt;/span&gt;&lt;br /&gt;PHP/Mapscript es un módulo para PHP que permite acceder a la API de MapServer. Éstas funciones y clases estarían disponible dentro de nuestro entorno de desarrollo.  El módulo fue desarrollado y es actualmente mantenida por la empresa  &lt;/span&gt;&lt;/span&gt; &lt;a href="http://www.dmsolutions.ca/"&gt;DM Solutions Group&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;La Familia mapscript está refresentada como el siguiente árbol (&lt;a href="http://mapserver.gis.umn.edu/cgi-bin/wiki.pl?MapScript"&gt;fuente de dato aquí&lt;/a&gt;):&lt;br /&gt;&lt;/span&gt;&lt;pre&gt;          &lt;/pre&gt;&lt;blockquote&gt;&lt;pre&gt;  &lt;span style="font-family:verdana;"&gt;MapServer&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                   /\&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                  /  \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                 /    \&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;PHPMapScript     \  SWIGMapScript&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;PHP4                   +----+-----+----+----+----+&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                            |    |     |    |    |    |&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;                          Perl Python Ruby Java Tcl  ...&lt;/span&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;br /&gt;Perl Python Ruby Java Tcl  ...&lt;span style="font-size:85%;"&gt;Y como se ve claramente el PHP es un Mapscript que es más cercano al MapServer y por ende más nativo en la ejecución de nuestras aplicaciones.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;El MapFile&lt;/span&gt;&lt;br /&gt;El MapServer se caracteriza por tener un archivo de configuración denominado mapfile que tiene como extensión punto map (.map).  Aquí se definen los datos a ser usados por nuestra aplicación como los siguientes mencionados:  las capas, sus tipos y su configuración; fuente de datos de origen y forma de servir los datos; leyenda y proyecciones ; y muchos otras configuraciones que se desea que se &lt;span style="font-style: italic;"&gt;cargen al inicio&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Por tal motivo, podríamos decir que el corazón del Mapserver se configura  a través de un archivo de texto que es usado en tiempo de ejecución. Bajo la perspectiva del programador se puede presentar como una jerarquía de objetos con un padre principal y muchos objetos hijos que derivan de él.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Notas sobre MapServer CGI : Aunque este no es el objetivo de nuestro artículo, la forma de utilización como CGI de mapserver es la más tradicional y la usada usualmente en los tutoriales que encontramos  en Internet. MapServer CGI trabaja a través de plantillas HTML (templates) y bajo estructuras rígidas de consulta básica. Ahí el archivo .map es de vital importancia para la inicialización de las capas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;El PHP Mapscript rompe ésta rigidez del .map (pues carga las capas configuradas en él al inicializar) y podemos modificar, cambiar e incluso agregar más capas según queramos. Ésto significa que si tenemos una capa de color verde inactiva, podemos modificarla a rojo y activa. Hacer acercamiento o consultar data relevante.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;Requerimientos para desarrollar&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Servidor Web: Apache o IIS con el módulo de PHP y PHP-mapscript de Mapserver&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Librerías : PROJ4, OGR, GDAL y utilitarios que iremos requiriendo&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Fuente de Datos:  shape files, PostGIS u otra fuente OGR&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Un archivo Mapfile (.map)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Un editor de texto o ID preferido para PHP.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Conocimiento básicos de Geodesia y SIG y lo más importante: Muchas ganas de aprender&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;span style="font-size:85%;"&gt;Estamos con suerte porque los requerimientos 1,2,3 ya vienen incluidos para Windows en un paquete llamado MS4W y lo pueden conseguir &lt;a href="http://www.maptools.org/ms4w/index.phtml?page=downloads.html"&gt;aquí.&lt;/a&gt;&lt;br /&gt;Para los que están metidos en Linux, verán que encontrarán infinidad de paquetes ya compilador tanto para Ubuntu, Debian o Fedora. Solo se intalarían los debs o rpms correspondientes.&lt;br /&gt;Por otro lado, también en Linux podrían usar un paquete denominado FGS y se encuentra &lt;a href="http://www.maptools.org/fgs/"&gt;aquí&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Si la instalación en Linux se torna algo dificultosa, pueden solicitar con comentario para crear un artículo dedicado sólo a la instalación del mismo.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;Un ejemplo básico:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;ejemplo01.php&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;1&lt;/b&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php&lt;br /&gt;&lt;b&gt;2&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// ejemplo01.php&lt;br /&gt;&lt;b&gt;3&lt;/b&gt;  // Jaime M. Tan Nozawa&lt;br /&gt;&lt;b&gt;4&lt;/b&gt;&lt;br /&gt;&lt;b&gt;5&lt;/b&gt;  //Cargo la extensión MapScript  . Verificamos si la extensión ya está cargada por defecto.&lt;br /&gt;&lt;b&gt;6&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;if (!&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;extension_loaded&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"MapScript"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;))   &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;dl&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;'php_mapscript.'&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;.&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;PHP_SHLIB_SUFFIX&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;7&lt;/b&gt;&lt;br /&gt;&lt;b&gt;8&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// instanciamos un nuevo objeto: map object. El constructor debe recibir al menos el parámetro de la ubicación del archivo .map&lt;br /&gt;&lt;b&gt;9&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;ms_newMapObj&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;(&lt;/span&gt;&lt;span style="color: rgb(221, 0, 0);"&gt;"ejemplo01.map"&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;);&lt;br /&gt;&lt;b&gt;10&lt;/b&gt;&lt;br /&gt;&lt;b&gt;11&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Renderización&lt;br /&gt;&lt;b&gt;12&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jMap&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;draw&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;13&lt;/b&gt;&lt;br /&gt;&lt;b&gt;14&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(255, 128, 0);"&gt;// Creamos y capturamos la ruta de imagen renderizada.&lt;br /&gt;&lt;b&gt;15&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;= &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$jImagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;saveWebImage&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;();&lt;br /&gt;&lt;b&gt;16&lt;/b&gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;br /&gt;&lt;b&gt;17&lt;/b&gt;  &lt;/span&gt;&amp;lt;HTML&amp;gt;&lt;br /&gt;&lt;b&gt;18&lt;/b&gt;     &amp;lt;HEAD&amp;gt;&lt;br /&gt;&lt;b&gt;19&lt;/b&gt;  &amp;lt;TITLE&amp;gt;Ejemplo 1&amp;lt;/TITLE&amp;gt;&lt;br /&gt;&lt;b&gt;20&lt;/b&gt;  &amp;lt;/HEAD&amp;gt;&lt;br /&gt;&lt;b&gt;21&lt;/b&gt;  &amp;lt;BODY&amp;gt;&lt;br /&gt;&lt;b&gt;22&lt;/b&gt;  &amp;lt;IMG SRC=&lt;span style="color: rgb(0, 0, 187);"&gt;&amp;lt;?php &lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;echo &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;$url_imagen&lt;/span&gt;&lt;span style="color: rgb(0, 119, 0);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(0, 0, 187);"&gt;?&amp;gt;&lt;/span&gt;  &amp;gt;&lt;br /&gt;&lt;b&gt;23&lt;/b&gt;  &amp;lt;/BODY&amp;gt;&lt;br /&gt;&lt;b&gt;24&lt;/b&gt;  &amp;lt;/HTML&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;ejemplo01.map&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;MAP&lt;br /&gt;NAME Pruebas&lt;br /&gt;SIZE 600 400&lt;br /&gt;EXTENT -87.9964 -19.0216 -63.114 1.19528&lt;br /&gt;&lt;br /&gt;WEB&lt;br /&gt;IMAGEPATH "C:/ms4w-php5/tmp/ms_tmp/"&lt;br /&gt;IMAGEURL "/ms_tmp/"&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;LAYER&lt;br /&gt;NAME "Departamentos"&lt;br /&gt;STATUS ON&lt;br /&gt;DATA "Lim_dep.shp"&lt;br /&gt;TYPE POLYGON&lt;br /&gt;CLASS&lt;br /&gt;STYLE&lt;br /&gt;COLOR 200 150 2&lt;br /&gt;OUTLINECOLOR 0 0 0&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;En el archivo .map  toda entrada es similar a etiquetas HTML porque tienen un inicio y un fin. El Mapfiles estonces está compuesto por objetos y otros que lo contiene.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;La estructura de objetos del mapfile sería la siguiente (Fuente: Tutorial MapServer 4.X):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;              MAP&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;                                           &lt;/span&gt;&lt;blockquote&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt; &lt;pre&gt;               |&lt;/pre&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;+----+-----+----+----+----+&lt;br /&gt;|                         |&lt;br /&gt;WEB                     LAYER  &lt;/pre&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt; &lt;pre&gt;                          |&lt;/pre&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;        +----+-----+----+----+----+&lt;br /&gt;|                       |&lt;br /&gt;CLASS                     ...&lt;/pre&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;b&gt;&lt;/b&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-weight: bold;"&gt;Explicando el .map&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Una sección relevante del .map es el objeto Web:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;WEB&lt;br /&gt;IMAGEPATH "C:/ms4w-php5/tmp/ms_tmp/"&lt;br /&gt;IMAGEURL "/ms_tmp/"&lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;Aquí se especifica las rutas donde se van a crear las imágenes renderizadas. Aquí le configuramos que se guarden en: &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;C:/ms4w-php5/tmp/ms_tmp/  (Cámbialo por uno de tu conviencia). Recuerda que esta carpeta debe de poder ser accedido públicamente a través de /ms_tmp/ . (El ms4w ya la configura automáticamente con un &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_alias.html"&gt;Alias en el Apache&lt;/a&gt;  -- httpd.conf :  &lt;span style="font-style: italic;"&gt;Alias /ms_tmp/ /ms4w-php5/tmp/ms_tmp/&lt;/span&gt;   --)&lt;br /&gt;&lt;br /&gt;Eso significa que si creamos una archivo :  &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;C:/ms4w-php5/tmp/ms_tmp/prueba.gif&lt;br /&gt;Se accede de la forma  :  http://localhost/&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;ms_tmp/&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;prueba.gif&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;IMPORTANTE: Cada vez que accedemos a nuestro script PHP : Ejemplo01.php ,  se percatarán que se crea automáticamente una imagen GIF  o JPG con un nombre aleatorio.  Esa es la imagen que se muestra hacia el navegante y es capturada en la variable $url_imagen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;El MAP tiene los siguientes atributos&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt; SIZE 600 400&lt;br /&gt;EXTENT -87.9964 -19.0216 -63.114 1.19528&lt;br /&gt;&lt;br /&gt;Especifica el tamaño de la imagen (el gif o jpg autogenerado ) y su extent.&lt;br /&gt;El Extent especifica el límite de coordenadas en el cual se mostrará el mapa.  En el Caso del Perú, como estamos en el OESTE - SUR ... corresponde los puntos:  inferior-izquierdo (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;-87.9964 -19.0216&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;)   y  superior-derecho (&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;-63.114 1.19528&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;). Mi analogía con trigonometría de matemáticas , es como si estuvieramos en el &lt;a href="http://es.wikipedia.org/wiki/Trigonometr%C3%ADa#Tercer_cuadrante"&gt;tercer cuadrante&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;El objeto Layer se encuentra contenido dentro del objeto MAP. Y el CLASS dentro del Layer&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;     LAYER&lt;br /&gt;NAME "Departamentos"&lt;br /&gt;STATUS ON&lt;br /&gt;DATA "Lim_dep.shp"&lt;br /&gt;TYPE POLYGON&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;pre&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;CLASS&lt;span&gt;&lt;span style="font-family:verdana;"&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;   STYLE&lt;span&gt;&lt;span style="font-family:verdana;"&gt;   &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;     &lt;/span&gt;&lt;/span&gt;COLOR 200 150 2&lt;br /&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;     &lt;/span&gt;&lt;/span&gt;OUTLINECOLOR 0 0 0&lt;br /&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;     &lt;/span&gt;&lt;/span&gt;END&lt;br /&gt;&lt;span&gt;&lt;span style="font-family:verdana;"&gt;          &lt;/span&gt;&lt;/span&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;END&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;Vemos que nuestra capa llamada "Departamentos" carga un &lt;a href="http://es.wikipedia.org/wiki/Shapefile"&gt;shape file&lt;/a&gt; de tipo polígono ... y lo coloremos con colores RGB (200 150 2) a través del objeto STYLE que se encuentra dentro del OBJETO CLASS.&lt;br /&gt;STATUS ON: dice que la capa esté activa y se muestre por defecto.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;El Resultado:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_GXVCVN62pLc/Ry9rc9UrflI/AAAAAAAAABo/sQLRyitB818/s1600-h/resulMapserver.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_GXVCVN62pLc/Ry9rc9UrflI/AAAAAAAAABo/sQLRyitB818/s320/resulMapserver.JPG" alt="" id="BLOGGER_PHOTO_ID_5129436645840092754" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp0.blogger.com/_GXVCVN62pLc/Ry-gGNUrfmI/AAAAAAAAABw/dmtI1CPDpU4/s1600-h/Dcomponentes.JPG"&gt;link anexo&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Shape File : &lt;a href="http://es.geocities.com/jtnozawa/lim_depShp.zip"&gt;Lim_dep.shp&lt;/a&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;/blockquote&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-653318451323508635?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/653318451323508635/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=653318451323508635' title='18 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/653318451323508635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/653318451323508635'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/11/php-mapscript-de-mapserver-parte-1.html' title='PHP-Mapscript de Mapserver. Parte 1: Conceptos'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_GXVCVN62pLc/Ry9rc9UrflI/AAAAAAAAABo/sQLRyitB818/s72-c/resulMapserver.JPG' height='72' width='72'/><thr:total>18</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-2815632389027027788</id><published>2007-10-31T00:20:00.000-05:00</published><updated>2007-10-31T00:23:47.986-05:00</updated><title type='text'>Web GoPHP5, Dejando a PHP4 sin soporte para el 2008</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.gophp5.org/"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://bitelia.com/wp-content/uploads/2007/07/gophp5.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;PHP4 ya tiene siete años de haber se liberado, y PHP5 ya casi llega a los 3 años de estar en el aire; pero a pesar de ello muchos hostings aun no han agregado soporte para php5 por temor a que las aplicaciones de sus clientes no funcionen, o al menos no lo activan por defecto. De acuerdo con Nexen.net el 80% de los hostings aún continuan usando php4 en sus servidores.&lt;br /&gt;&lt;br /&gt;Es por ello que nace GoPHP5.org, como una iniciativa para que los proyectos basados en php abandonen el soporte a PHP4 y se pasen a PHP5, aprovechando sus ventajas; así como comprometer a los hostings para que ellos también eliminen php4 de sus servidores.&lt;br /&gt;&lt;br /&gt;La meta es llegar 5 de Febrero de 2008 con el mínimo soporte para php4. Proyectos como Drupal 7 y phpMyAdmin ya se han comprometido a esta iniciativa, y otros como MediaWiki desde ya solo corren en php5. En la lista de correo wp-hackers ya han discutido el cambio hacia php5 varias veces ya. La respuesta siempre ha sido: cuando exista mayor soporte de php5.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.gophp5.org/" target="_blank"&gt;http://www.gophp5.org/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-2815632389027027788?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/2815632389027027788/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=2815632389027027788' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2815632389027027788'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2815632389027027788'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/10/web-gophp5-dejando-php4-sin-soporte.html' title='Web GoPHP5, Dejando a PHP4 sin soporte para el 2008'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-1286342865839677911</id><published>2007-10-29T01:16:00.000-05:00</published><updated>2007-10-29T01:39:44.206-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP bienvenida'/><category scheme='http://www.blogger.com/atom/ns#' term='peruano'/><category scheme='http://www.blogger.com/atom/ns#' term='framework'/><title type='text'>Propuesta de creación framework PHP peruano</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://www.somoslibres.org/imagenes/phpperu.jpg" alt="" border="0" /&gt;&lt;span style="font-family: arial;font-size:85%;" &gt;Hace poco me dieron la propuesta para desarrollar un framework propio peruano para PHP 5 con MVC  y usando patrones de diseño. Bueno, ya se comenzó el desarrollo aún con muchos problemas de ausencia de servidor y manos para el apoyo. Pero ahí se avanza.&lt;br /&gt;Estaré informando de las noticias y los avances. A ver si alguien quiere apoyar..!! En lo que sea : con un servidor SVN: manos pa programar y controlar versiones; o simplemente pidiendo que le gustaría que tenga...  JA!&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-1286342865839677911?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/1286342865839677911/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=1286342865839677911' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1286342865839677911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/1286342865839677911'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/10/propuesta-de-creacin-framework-php.html' title='Propuesta de creación framework PHP peruano'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-2173556250707617914</id><published>2007-10-27T20:28:00.000-05:00</published><updated>2007-11-15T12:51:24.405-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='UML'/><category scheme='http://www.blogger.com/atom/ns#' term='UMLPHP'/><title type='text'>Wiki de UML con PHP</title><content type='html'>He abierto este wiki de UML con PHP  que habla sobre el tema&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/UMLPHP"&gt;http://es.wikipedia.org/wiki/UMLPHP&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Espero puedan colaborar y aportar. aun esta en construcción para ser mejorado.&lt;br /&gt;&lt;br /&gt;Por cierto, estaré haciendo más articulos sobre este tema que será de interés para muchos, que es trabajar con objetos y PHP 5.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-2173556250707617914?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/2173556250707617914/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=2173556250707617914' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2173556250707617914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/2173556250707617914'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/10/wiki-de-uml-con-php.html' title='Wiki de UML con PHP'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7629056966471660184.post-5963023905698033719</id><published>2007-10-27T20:03:00.000-05:00</published><updated>2007-10-27T20:07:31.329-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP bienvenida'/><title type='text'>Bienvenido al blog PHP experto</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://elblogdeinwe.com/blogviejo/imagenes/noticias/php.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://elblogdeinwe.com/blogviejo/imagenes/noticias/php.jpg" alt="" border="0" /&gt;&lt;/a&gt;Bienvenido al Blog de PHP experto, espero sea de tu agrado las experiencias y todas los artículos interesantes que se publiquen sobre PHP orientación a objetos y detalles interesantes.&lt;br /&gt;&lt;br /&gt;Saludos&lt;br /&gt;&lt;br /&gt;YO... JTN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7629056966471660184-5963023905698033719?l=phpexperto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://phpexperto.blogspot.com/feeds/5963023905698033719/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7629056966471660184&amp;postID=5963023905698033719' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/5963023905698033719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7629056966471660184/posts/default/5963023905698033719'/><link rel='alternate' type='text/html' href='http://phpexperto.blogspot.com/2007/10/bienvenido-al-blog-php-experto.html' title='Bienvenido al blog PHP experto'/><author><name>Jtux</name><uri>http://www.blogger.com/profile/16904990834323942562</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://bp3.blogger.com/_GXVCVN62pLc/R2YNwVymr0I/AAAAAAAAACw/jI7x52HsX8U/S220/EXPO_SIDEM_CONFE.jpg'/></author><thr:total>1</thr:total></entry></feed>
