<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>HectorBenitez.com [Blog] &#187; PHP</title> <atom:link href="http://blog.hectorbenitez.com/category/desarrollo_programacion/desarrollo-web/php/feed/" rel="self" type="application/rss+xml" /><link>http://blog.hectorbenitez.com</link> <description>Desarrollo de sistemas o algo por el estilo...</description> <lastBuildDate>Sun, 11 Dec 2011 22:25:49 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.3.1</generator> <item><title>Old password authentication with MySQL</title><link>http://blog.hectorbenitez.com/2010/10/old-password-authentication-with-mysql/</link> <comments>http://blog.hectorbenitez.com/2010/10/old-password-authentication-with-mysql/#comments</comments> <pubDate>Thu, 21 Oct 2010 15:46:37 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[Bases de datos]]></category> <category><![CDATA[Computación]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[MySQL]]></category> <category><![CDATA[PHPMyAdmin]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1726</guid> <description><![CDATA[MySQL a partir de su version 4.1 cambio la manera en la que almacena sus contraseñas, esto lo hizo para mejorar la seguridad, sin embargo, para mantener compatibilidad aun es posible manejar contraseñas con el viejo estilo, esto en muchos casos es transparente para los usuarios y los desarrolladores sin embargo, con el paso del [...]]]></description> <content:encoded><![CDATA[<p><a title="MySQL" href="http://blog.hectorbenitez.com/tag/mysql/">MySQL</a> a partir de su version 4.1 cambio la manera en la que almacena sus contraseñas, esto lo hizo para mejorar la <a title="seguridad" href="http://blog.hectorbenitez.com/category/computacion/seguridad/">seguridad</a>, sin embargo, para mantener compatibilidad aun es posible manejar contraseñas con el viejo estilo, esto en muchos casos es transparente para los usuarios y los desarrolladores sin embargo, con el paso del tiempo algunos clientes evolucionan y dejan de permitir el manejo de cuentas con &#8220;old passwords&#8221; , por ejemplo, si tu trabajas con PHP 5.3+ MYSQLND -enabled PDO MySQL Driver, recibiras un error que dice:<br /> mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication.</p><p>SQLSTATE[HY000] [2000] mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administration tool to reset your password with the command SET PASSWORD = PASSWORD(&#8216;your_existing_password&#8217;). This will store a new, and more secure, hash value in mysql.user. If this user is used in other scripts executed by PHP 5.2 or earlier you might need to remove the old-passwords flag from your my.cnf file</p><p>Ademas de algunos warnings mas, segun el mensaje lo unico que tenemos que hacer es cambiar el password del usuario usando la funcion PASSWORD, o en caso de que uses <a title="phpMyAdmin" href="http://blog.hectorbenitez.com/tag/phpmyadmin/">phpMyAdmin</a> dando a la contraseña compatibilidad con MySQL 4.1+, que es una opción al momento de cambiar una contraseña.</p><p>En caso de que esto no funcione es posible que tengas algun otro problema con tu servidor MySQL, algunos puntos que debes checar son los siguientes:</p><ul><li>En la tabla mysql.user el campo password debe tener una longitud de 41, en caso de que tenga una longitud de 16 debes cambiarla, esto pasa generalmente en servidores que actualizaron desde una version anterior a 4.1.</li><li>Existe una variable de sistema llamada old_passwords que cambia el comportamiento de tu servidor y lo obligaria a siempre generar old passwords, existen 2 formas de comprobar si esta variable esta activa, la primera seria revisar las variables de MySQL (por ejemplo phpMyAdmin tiene un link a Variables en la pagina principal) o podrias ejecutar esto:</li></ul><blockquote><pre>SELECT PASSWORD("Algo")</pre></blockquote><p>El resultado esperado debe ser una cadena de 41 caracteres de largo que comienza con un *, en caso de que te regrese una cadena de 16 caracteres de longitud quiere decir que old_passwords esta activa, ahora, para solucionar esto existen 3 posibles acciones, quitar del comando con el que se inicia MySQL el parametro &#8211;old-passwords, poner en OFF la variable old_passwords de tu archivo de configuracion o usar el comando SET GLOBAL para poner en FALSE la variable de sistema.</p><p>Mas informacion en el <a href="http://dev.mysql.com/doc/refman/5.1/en/password-hashing.html" target="_blank">sitio de MySQL</a></p><p>Algunos reportes en el sitio de <a href="http://bugs.php.net/bug.php?id=52799" target="_blank">PHP</a></p><p>Saludos&#8230;</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/10/old-password-authentication-with-mysql/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>NETTUTS.com: Una introducción a Patrones de Diseño</title><link>http://blog.hectorbenitez.com/2010/08/nettuts-com-una-introduccion-a-patrones-de-diseno/</link> <comments>http://blog.hectorbenitez.com/2010/08/nettuts-com-una-introduccion-a-patrones-de-diseno/#comments</comments> <pubDate>Wed, 04 Aug 2010 01:29:13 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Patrones de diseño]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1716</guid> <description><![CDATA[En NETTUTS.com han posteado un nuevo tutorial que les dara una introducción a uno de los conceptos avanzados mas importantes en el desarrollo de aplicaciones: Los patrones de diseño. Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we [...]]]></description> <content:encoded><![CDATA[<p>En NETTUTS.com han posteado un <a href="http://net.tutsplus.com/articles/general/a-beginners-guide-to-design-patterns" target="_blank">nuevo tutorial</a> que les dara una introducción a uno de los conceptos avanzados mas importantes en el desarrollo de aplicaciones: Los patrones de <a title="diseño" href="http://blog.hectorbenitez.com/category/diseno/">diseño</a>.</p><blockquote><p>Design patterns are optimized, reusable solutions to the programming problems that we encounter every day. A design pattern is not a class or a library that we can simply plug into our system; it&#8217;s much more than that. It is a template that has to be implemented in the correct situation. It&#8217;s not language-specific either. A good design pattern should be implementable in most &#8211; if not all &#8211; languages, depending on the capabilities of the language.</p></blockquote><p>Ellos dan una pequeña introducción a algunos de los <a title="patrones de diseño" href="http://blog.hectorbenitez.com/tag/patrones-de-diseno/">patrones de diseño</a> mas utilizados, por ejemplo strategy, adapter, factory, decorator y <a title="singleton" href="http://blog.hectorbenitez.com/tag/singleton/">singleton</a>, cada uno viene con un poco de codigo ejemplo y nos hablan un poco de ¿En que casos deberia usarlo?.</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/08/nettuts-com-una-introduccion-a-patrones-de-diseno/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>NETTUTS.com: Como empezar a usar Facebook Connect, una guía rápida</title><link>http://blog.hectorbenitez.com/2010/08/nettuts-com-como-empezar-a-usar-facebook-connect-una-guia-rapida/</link> <comments>http://blog.hectorbenitez.com/2010/08/nettuts-com-como-empezar-a-usar-facebook-connect-una-guia-rapida/#comments</comments> <pubDate>Mon, 02 Aug 2010 18:30:25 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[Facebook]]></category> <category><![CDATA[Facebook Connect]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1714</guid> <description><![CDATA[Si tu eres uno de esos que han estado pensando en agregar autentificación a tu sitio web usando Facebook Connect, el sistema que ofrece Facebook pero no sabes por donde empezar, échale un ojo a este nuevo tutorial publicado en NETTUTS.com el cual tiene una muy buena guía de introducción. Lately, there&#8217;s been quite a fuzz about lazy registration. It turns out [...]]]></description> <content:encoded><![CDATA[<p>Si tu eres uno de esos que han estado pensando en agregar autentificación a tu sitio web usando <a title="Facebook Connect" href="http://blog.hectorbenitez.com/tag/facebook-connect/">Facebook Connect</a>, el sistema que ofrece <a href="http://www.facebook.com/" target="_blank">Facebook</a> pero no sabes por donde empezar, échale un ojo a <a href="http://net.tutsplus.com/tutorials/php/how-to-authenticate-your-users-with-facebook-connect" target="_blank">este nuevo tutorial</a> publicado en NETTUTS.com el cual tiene una muy buena guía de introducción.</p><blockquote><p>Lately, there&#8217;s been <a href="http://www.90percentofeverything.com/2009/03/16/signup-forms-must-die-heres-how-we-killed-ours/" target="_blank">quite a fuzz about lazy registration</a>. It turns out that the less the user has to think, the higher the conversion rates are! What a thought! If everybody seems to have a <a title="Facebook" href="http://blog.hectorbenitez.com/tag/facebook/">Facebook</a> profile, why not add a one-click user registration? I&#8217;ll show you how to do that today.</p></blockquote><p>Esta guía nos ayudara a crear nuestra aplicación, que tablas necesitamos, un poco de permisos extendidos e incluso nos mostrar como enviar algo al perfil del usuario una vez que se haya conectado, sin duda un buen punto de partida.</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/08/nettuts-com-como-empezar-a-usar-facebook-connect-una-guia-rapida/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>phpDevelopment Blog: Zend Framework Tutorial Series: Part 1 &#8211; The Module Based Application</title><link>http://blog.hectorbenitez.com/2010/08/phpdevelopment-blog-zend-framework-tutorial-series-part-1-the-module-based-application/</link> <comments>http://blog.hectorbenitez.com/2010/08/phpdevelopment-blog-zend-framework-tutorial-series-part-1-the-module-based-application/#comments</comments> <pubDate>Mon, 02 Aug 2010 03:47:15 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[zend framework]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1709</guid> <description><![CDATA[En el blog phpDevelopment(phpdev.ro) recientemente postearon la primera parte de una nueva serie de artículos que hablan sobre como crear una aplicación modular basada en Zend Framework. En esta primera parte nos hablan sobre la estructura de la aplicación. In this first article of the series, we will discuss about the best way (in my oppinion) to structure your Zend Application in order to [...]]]></description> <content:encoded><![CDATA[<p>En el blog <strong>phpDevelopment</strong>(phpdev.ro) recientemente postearon la primera parte de una nueva serie de artículos que hablan sobre como crear una aplicación modular basada en <strong>Zend</strong> <strong>Framework</strong>. En esta <a href="http://phpdev.ro/zf-tutorial-series-part-1-module-based-app.html" target="_blank">primera parte</a> nos hablan sobre la estructura de la aplicación.</p><p><strong> </strong></p><blockquote><p>In this first article of the <strong><a title="series" href="http://blog.hectorbenitez.com/tag/series/">series</a></strong>, we will discuss about the best way (in my oppinion) to structure your <strong>Zend</strong> Application in order to have maximum flexibility but also a good defined structure of the classes/files.</p></blockquote><p>Si quieren empezar de inmediato pueden <a href="http://phpdev.ro/wp-content/code_snippets/zf-tutorial-series-part-1-module-based-app/files.rar" target="_blank">descargar el código fuente completo desde aquí</a> o pueden seguir progresivamente la serie según salgan los nuevos artículos.</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/08/phpdevelopment-blog-zend-framework-tutorial-series-part-1-the-module-based-application/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Rob Allen&#8217;s Blog: Nuevo tutorial de Zend_Auth</title><link>http://blog.hectorbenitez.com/2010/07/rob-allens-blog-nuevo-tutorial-de-zend_auth/</link> <comments>http://blog.hectorbenitez.com/2010/07/rob-allens-blog-nuevo-tutorial-de-zend_auth/#comments</comments> <pubDate>Tue, 27 Jul 2010 17:15:39 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[zend framework]]></category> <category><![CDATA[zend_auth]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1508</guid> <description><![CDATA[Rob Allen tiene un nuevo articulo en su blog en el cual actualiza por completo su tutorial de Zend_Auth, una introducción al componente de autentificación del Zend Framework. After too many months of neglect, I have completely rewritten my Zend_Auth tutorial so that it is compatible with Zend Framework 1.10! As an experiment, I have written it directly [...]]]></description> <content:encoded><![CDATA[<p><em>Rob Allen</em> tiene un nuevo articulo en su blog en el cual actualiza por completo <a href="http://akrabat.com/zend-framework/new-zend-auth-tutorial/" target="_blank">su tutorial de Zend_Auth</a>, una introducción al componente de autentificación del <a title="Zend Framework" href="http://blog.hectorbenitez.com/tag/zend-framework/">Zend Framework</a>.</p><blockquote><p>After too many months of neglect, I have completely rewritten my <a href="http://akrabat.com/zend-auth-tutorial" target="_blank">Zend_Auth tutorial</a> so that it is compatible with Zend Framework 1.10! As an experiment, I have written it directly in HTML, rather than PDF as before and cover the login form along with the login controller code required to authenticate a user using a database table. For good measure, I&#8217;ve included logging out and a view helper to show how to access the logged in user&#8217;s details.</p></blockquote><p><a href="http://akrabat.com/zend-auth-tutorial/" target="_blank">Este tutorial</a> nos guía a través de la creación de una tabla de usuarios, un controller con formulario y el código necesario para validar al usuario con la información de la tabla, también se incluye un link para <a href="http://akrabat.com/wp-content/uploads/zf-auth-tutorial-200.zip" target="_blank">descargar el código fuente</a> en un archivo zip.</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/07/rob-allens-blog-nuevo-tutorial-de-zend_auth/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>php&#124;architect: Genera documentos de Word con PHP, PHPDOCX</title><link>http://blog.hectorbenitez.com/2010/07/phparchitect-genera-documentos-de-word-con-php-phpdocx/</link> <comments>http://blog.hectorbenitez.com/2010/07/phparchitect-genera-documentos-de-word-con-php-phpdocx/#comments</comments> <pubDate>Sat, 24 Jul 2010 17:47:37 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[php|architect]]></category> <category><![CDATA[Word]]></category> <category><![CDATA[Xsl]]></category> <category><![CDATA[Zip]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=1209</guid> <description><![CDATA[En el blog de php&#124;architect tienen un nuevo articulo acerca de una herramienta que nos ayudara a crear documentos de Word directamente desde nuestras aplicaciones PHP - PHPDOCX. PHPDOCX is a PHP library that allows its client code to generate Microsoft Word documents in the .docx format from PHP scripts. PHP is increasingly being used for [...]]]></description> <content:encoded><![CDATA[<p>En el blog de <a title="php|architect" href="http://blog.hectorbenitez.com/tag/phparchitect/">php|architect</a> tienen <a href="http://www.phparch.com/2010/07/21/phpdocx-generating-word-documents-from-php" target="_blank">un nuevo articulo</a> acerca de una herramienta que nos ayudara a crear documentos de <a title="Word" href="http://blog.hectorbenitez.com/tag/word/">Word</a> directamente desde nuestras aplicaciones PHP - <a href="http://www.phpdocx.com" target="_blank">PHPDOCX</a>.</p><blockquote><p>PHPDOCX is a PHP library that allows its client code to generate Microsoft Word documents in the .docx format from PHP scripts. PHP is increasingly being used for disparate goals and has to deal with data that comes from strange sources and has to be produced in stranger formats. [...] Starting with the 1.5 version, which has been released on July 12th, PHPDOCX is now compatible with PHP 5.3. The adoption of PHP 5.3 from operating systems is growing and it will at last replace the previous versions of PHP also in the servers of hosting providers.</p></blockquote><p>En este articulo se mencionan las caracteristicas que se incluyen, asi como los requisitos para que esta herramienta funcione como lo son las extenciones <a href="http://php.net/manual/en/book.zip.php" target="_blank">zip</a> y <a href="http://php.net/manual/en/book.xsl.php" target="_blank">xsl</a>.</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/07/phparchitect-genera-documentos-de-word-con-php-phpdocx/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Netbeans y Zend Framework, primeros pasos</title><link>http://blog.hectorbenitez.com/2010/07/netbeans-y-zend-framework-primeros-pasos/</link> <comments>http://blog.hectorbenitez.com/2010/07/netbeans-y-zend-framework-primeros-pasos/#comments</comments> <pubDate>Sat, 17 Jul 2010 04:46:34 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[IDE's]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[NetBeans]]></category> <category><![CDATA[zend framework]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=725</guid> <description><![CDATA[Pues ya tiene algún tiempo que salió la versión 6.9 de Netbeans con soporte para el Zend Framework incluido, en esta ocasión vamos a comenzar a utilizarlo de una forma básica, al menos vamos a crear nuestro primer proyecto basado en Zend Framework y lo comenzaremos a utilizar&#8230; Lo primero que tenemos que hacer es [...]]]></description> <content:encoded><![CDATA[<p>Pues ya tiene algún tiempo que salió la versión 6.9 de <a title="Netbeans" href="http://blog.hectorbenitez.com/tag/netbeans/">Netbeans</a> con soporte para el <a title="Zend Framework" href="http://blog.hectorbenitez.com/tag/zend-framework/">Zend Framework</a> incluido, en esta ocasión vamos a comenzar a utilizarlo de una forma básica, al menos vamos a crear nuestro primer proyecto basado en Zend Framework y lo comenzaremos a utilizar&#8230;</p><p>Lo primero que tenemos que hacer es descargar el Zend Framework, tenemos que tomar de ahí la carpeta bin, esta carpeta necesitamos tenerla en una ubicación fija ya que esto es la base del soporte de Netbeans a Zend Framework.</p><p><a href="http://blog.hectorbenitez.com/wp-content/uploads/2010/07/logo-zend-framework.jpg"><img class="aligncenter size-full wp-image-727" title="logo-zend-framework" src="http://blog.hectorbenitez.com/wp-content/uploads/2010/07/logo-zend-framework.jpg" alt="" width="282" height="190" /></a></p><p>En Netbeans abriremos opciones (Tools -&gt; Options) e iremos a la parte de PHP, ahí llegaremos pestaña de Zend y en el campo que dice Zend Script navegaremos hasta la carpeta bin que mencionamos antes y elegiremos el archivo .bat para <a title="windows" href="http://blog.hectorbenitez.com/category/computacion/windows/">windows</a> o el .sh para <a title="linux" href="http://blog.hectorbenitez.com/category/computacion/linux/">linux</a> (En caso de que el path este registrado en el sistema Netbeans lo puede encontrar por si solo), en caso de que la versión sea mayor a 1.10 daremos click en el boton &#8220;Registrar proveedor&#8221;, con esto ya tenemos Netbeans listo para trabajar con Zend Framework.<br /> <span id="more-725"></span><br /> Ahora si vamos a empezar a trabajar con el Zend Framework, vamos a crear un proyecto nuevo de PHP y al llegar a la ultima sección del asistente, la de los <a title="frameworks" href="http://blog.hectorbenitez.com/tag/frameworks/">frameworks</a> vamos a marcar Zend Framework y vamos a dar click en finalizar, esto ejecutara el Zend Script y generará un proyecto con toda la estructura del Zend Framework, el index, el htaccess, todo está listo, sin embargo cabe mencionar que la carpeta lib esta vacía, hay que copiar y pegar el Framework ahí dentro (también puedes registrar la ruta donde tengas el framework dentro de las opciones de PHP en la sección de Global Include Path), después de este paso ya podemos ejecutar nuestro proyecto y nos aparecerá una página diciéndonos que es un nuevo proyecto creado con Zend Framework.</p><p>Hasta este punto todo está bien, sin embargo es crucial en la mayoría de los proyectos el usar una base de datos, vamos a configurar una usando el Zend Script con el comando configure db-adapter, este sería un ejemplo con <a title="MySql" href="http://blog.hectorbenitez.com/tag/mysql/">MySql</a>:</p><p>zf configure db-adapter &#8216;adapter=Pdo_Mysql&amp;host=localhost&amp;username=name&amp;password=pass&amp;dbname=basename&#8217;</p><p>Realmente con la integración de Zend Framework lo que tenemos que hacer es dar click derecho sobre nuestro proyecto y en el menú contextual vamos a Zen -&gt; Run command&#8230;, ahí se abrirá un dialogo en el cual se enlistan todos los comandos disponibles y es posible filtrar al ir escribiendo sobre el campo Filter, seleccionamos el comando configure db-adapter y en el campo parameters escribiríamos: adapter=Pdo_Mysql&amp;host=localhost&amp;username=name&amp;password=pass&amp;dbname=basename</p><p>Ahora trabajaremos con esa conexión, vamos a crear elementos para nuestra aplicación, primero un modelo para usar nuestra base de datos, y después una acción, la cual nos genera una vista lista para usarse, para empezar vamos a trabajar con una base de datos que ya existe y tiene una tabla llamada &#8220;Usuarios&#8221; para crear un DbTable de la misma forma que antes abriremos el dialogo &#8220;Run Zend command&#8221; y ahora elegiremos el comando create db-table con los parámetros &#8220;Usuarios usuarios&#8221;, el primero indica el nombre del modelo y el segundo el nombre de la tabla, después de esto puedes entrar a la carpeta models de ahí entraras a DbTable y ahí encontraras Usuarios.php, después crearemos una acción usando el comando create action y pondremos ahí el nombre de la acción seguido del nombre del controlador que la contiene por ejemplo: find Index, esto creara findAction dentro del controlador Index, pero adema creara el archivo de vista que en este caso seria view/scripts/index/find.phtml</p><p>Un par de cosas extras que son notables acerca del trabajo con acciones y vistas, es que ahora existe forma de navegar directamente entre la acción y la vista, por ejemplo si ustedes están en una acción, dan click derecho y en el menú contextual ve a Navigate y se encontraran con una nueva opción &#8220;Go to View&#8221;, viceversa si ustedes están en la vista verán la opción &#8220;Go to Action&#8221;, el otro punto notable es que las variables que asignen a la vista en la acción si estarán disponibles en el autocompletar de la Vista por ejemplo si en una acción ponen $this-&gt;view-&gt;var1 = 1; esta variable estará disponible en la Vista a través de $this-&gt;var1, excelente no creen?</p><p>Por último les aconsejo que para hacer su trabajo con el Zend Script aun más amigable, creen una combinación de acceso rápido a la herramienta, esto lo pueden hacer en Options en la sección Keymaps&#8230; pues eso es todo por hoy, espero sea de ayuda, cualquier duda, por aquí andamos&#8230; saludos</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/07/netbeans-y-zend-framework-primeros-pasos/feed/</wfw:commentRss> <slash:comments>2</slash:comments> </item> <item><title>Doctrine ORM: Inicio Rápido</title><link>http://blog.hectorbenitez.com/2010/02/doctrine-orm-inicio-rapido/</link> <comments>http://blog.hectorbenitez.com/2010/02/doctrine-orm-inicio-rapido/#comments</comments> <pubDate>Mon, 22 Feb 2010 18:13:39 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[Bases de datos]]></category> <category><![CDATA[PHP]]></category> <category><![CDATA[doctrine]]></category> <category><![CDATA[orm]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=671</guid> <description><![CDATA[Doctrine es un ORM(object relational mapper) que se ha vuelto muy popular en los últimos meses, la verdad es una herramienta que puede apoyar mucho nuestros desarrollos y es notable la cantidad de desarrolladores de Zend Framework o CodeIgniter que lo están incorporando, si bien, aprender Doctrine no es muy complejo, nunca está de más [...]]]></description> <content:encoded><![CDATA[<p><a title="Doctrine" href="http://blog.hectorbenitez.com/tag/doctrine/">Doctrine</a> es un ORM(object relational mapper) que se ha vuelto muy popular en los últimos meses, la verdad es una herramienta que puede apoyar mucho nuestros desarrollos y es notable la cantidad de desarrolladores de <a title="Zend Framework" href="http://blog.hectorbenitez.com/tag/zend-framework/">Zend Framework</a> o CodeIgniter que lo están incorporando, si bien, aprender Doctrine no es muy complejo, nunca está de más tener una guía de &#8220;Inicio Rápido&#8221;, y este post nos muestra de una manera muy sencilla como empezar a usar Doctrine&#8230; esta guía considera que Doctrine ya está funcionando en tu proyecto y de alguna manera sus clases están generadas(esto sería el paso 1, si creen que vale la pena podemos hacer un post al respecto)&#8230; de cualquier forma todo esto y mas se encuentra en la documentación de Doctrine, la cual esta en su <a href="http://www.doctrine-project.org/">sitio oficial</a>.</p><div><strong>Crear una conexión&#8230;</strong></div><pre class="brush: php">Doctrine_Manager::connection( "<a title="mysql" href="http://blog.hectorbenitez.com/tag/mysql/">mysql</a>://user:pass@server/db", 'myconn');</pre><div><strong>Insertar registros</strong></div><p>Objeto Record<br /> Esta es la forma más usada y sencilla. Cuando el método save es llamado el nuevo registro es creado&#8230;</p><pre class="brush: php">$u = new User();
$u-&gt;username = 'user';
$u-&gt;password = 'pass';
$u-&gt;save();</pre><p>Metodo fromArray()<br /> Existen ocasiones en los cuales los datos ya están en un arreglo.</p><pre class="brush: php">$data = array(
'username' =&gt; 'user',
'password' =&gt; 'pass',
'email' =&gt; 'mail@mail.com'
);
$u = new User();
$u-&gt;fromArray($data);
$u-&gt;save();</pre><p><span id="more-671"></span>Método flush() de Doctrine_Connection<br /> Cuando mandas llamar el método Doctrine_Connection::flush(), todos los objetos que no se han guardado se guardaran automáticamente, Doctrine ejecuta esto como una sola transacción.</p><pre class="brush: php">$u = new User();
$u-&gt;username = 'user';
$u-&gt;password = 'pass';
$u2 = new User();
$u2-&gt;username = 'foo';
$u2-&gt;password = 'bar';
$conn = Doctrine_Manager::connection();
$conn-&gt;flush();</pre><p>SQL<br /> También puedes crear una consulta de SQL y usarla a través de el método execute() de la clase Doctrine_Connection. El método execute soporta sustitución de valores usando el caracter &#8216;?&#8217;, y al usar esto automáticamente te proteges de SQL injection.</p><pre class="brush: php">
$data = array('user','pass');
$conn = Doctrine_Manager::connection();
$conn->execute('INSERT INTO user (username, password) VALUES (?,?)',  $data);
</pre><div><strong>Leer registros</strong</div><p>Estas operaciones hacen uso frecuente de los objetos Doctrine_Table los cuales pueden ser obtenidos llamando el método Doctrine::getTable() y como parámetro el nombre de la clase modelo, con los ejemplos se entenderá mejor.<br/><br /> Método find()<br /> El método find() hace una búsqueda a partir de la clave primaria de la tabla.</p><pre class="brush: php">
$user_id = 1;
$u = Doctrine::getTable('User')->find($user_id);
echo $u->username;
</pre><p>Método findOneBy*()<br /> Este es un método mágico al cual simplemente se le tiene que apendizar el nombre de la columna y buscara en la tabla a partir de esa columna. Este método solo obtiene un registro. Al usar estos métodos se debe capitalizar la primer letra de el nombre de la columna aunque este escrito con minúsculas&#8230;</p><pre class="brush: php">
$username = 'myuser';
$u = Doctrine::getTable('User')->findOneByUsername($username);
echo $u->username;
</pre><p>Método findBy*()<br /> Otro método mágico el cual funciona similar al anterior pero obteniendo múltiples registros.</p><pre class="brush: php">
$users = Doctrine::getTable('User')->findByRole('admin');
echo $users[0]->username;
echo $users[1]->username;
</pre><p>DQL<br /> Doctrine Query Language es una de las características mas fuertes de Doctrine, en este ejemplo crearemos un objeto query y a partir de ahí se irá generando la consulta, este ejemplo es muy básico pero se entenderá fácilmente, después de ejecutar la consulta nos regresara un objeto Doctrine_Collection.</p><pre class="brush: php">
$role = 'admin';
$q = Doctrine_Query::create()
->select('username')
->from('User')
->where('role = ?', $role)
->limit(20);
$users = $q->execute();
echo $users[0]->username;
echo $users[1]->username;
</pre><p>Método toArray()<br /> El objetos Doctrine_Record tiene un método toArray() el cual nos permitirá obtener un arreglo asociativo a partir de un Doctrine_Record&#8230;</p><pre class="brush: php">
$user_id = 1;
$u = Doctrine::getTable('User')->find($user_id);
$u_arr = $u->toArray();
print_r($u_arr);
</pre><div><strong>Actualizar registros</strong></div><p>Objeto Record<br /> Puedes hacer cualquier cantidad de cambios a un objeto, al llamar el método save() se actualizara en la base de datos&#8230;</p><pre class="brush: php">
$user_id = 1;
$u = Doctrine::getTable('User')->find($user_id);
$u->password = 'newpass';
$u->save();
</pre><p>DQL<br /> Cuando quieres actualizar muchos registros a la vez esta es una opción muy recomendada, en este ejemplo el método execute() regresa el numero de registros afectados&#8230;</p><pre class="brush: php">
$status = 'active';
$q = Doctrine_Query::create()
->update('User')
->set('status', '?', $status)
->where('id < 5');
$numrows = $q->execute();
echo "$numrows records updated";
</pre><div><strong>Borrar registros</strong></div><p>Objeto Record</p><pre class="brush: php">
$user_id = 1;
$u = Doctrine::getTable('User')->find($user_id);
$u->delete();
</pre><p>DQL<br /> Al igual que en la actualización esta es una opción para la eliminación, en este ejemplo el método execute() regresa el numero de registros eliminados&#8230;</p><pre class="brush: php">
$q = Doctrine_Query::create()
->delete('User')
->where('id < 5');
$numrows = $q->execute();
echo "$numrows records deleted";
</pre><p>Pues esto es todo por hoy, espero sea de ayuda y les permita comenzar a usar Doctrine aquí nos falto tocar el tema de la configuración de Doctrine pero la verdad es que no es muy complicado, como sea si alguien tiene algún problema no dude en consultar, ojala y pueda ayudarlos&#8230; saludos</p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/02/doctrine-orm-inicio-rapido/feed/</wfw:commentRss> <slash:comments>9</slash:comments> </item> <item><title>NetBeans y Zend Framework</title><link>http://blog.hectorbenitez.com/2010/01/netbeans-y-zend-framework/</link> <comments>http://blog.hectorbenitez.com/2010/01/netbeans-y-zend-framework/#comments</comments> <pubDate>Fri, 08 Jan 2010 00:43:02 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[NetBeans]]></category> <category><![CDATA[zend framework]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=627</guid> <description><![CDATA[Este artículo habla de las primeras versiones de prueba cuando se comenzo a desarrollar el soporte de Zend Framework con Netbeans, si estas buscando un articulo acerca de el uso del ZF en Netbeans 6.9 puedes consultar este otro artículo. Actualizado: Julio 2010 Pues parece ser que al fin, despues del gran avance que fue [...]]]></description> <content:encoded><![CDATA[<p>Este artículo habla de las primeras versiones de prueba cuando se comenzo a desarrollar el soporte de <a title="Zend Framework" href="http://blog.hectorbenitez.com/tag/zend-framework/">Zend Framework</a> con <a title="Netbeans" href="http://blog.hectorbenitez.com/tag/netbeans/">Netbeans</a>, si estas buscando un articulo acerca de el uso del ZF en Netbeans 6.9 puedes consultar <a href="http://blog.hectorbenitez.com/2010/07/netbeans-y-zend-framework-primeros-pasos/" target="_self">este otro artículo</a>. Actualizado: Julio 2010</p><p>Pues parece ser que al fin, despues del gran avance que fue dar soporte a Symfony el dia de ayer se mostro un pequeño avance de lo que podria ser un completo soporte para ZF en NetBeans (aplicaciones se pueden realizar, pero hablamos de un soporte que nos facilite el uso y aproveche herramientas como ZendTool), esta es una noticia muy buena para muchos desarrolladores sobre todo para los que preferimos usar NetBeans sobre Eclipse (con todo y Zend Studio), en este <a href="http://blogs.sun.com/netbeansphp/entry/zend_framework_support_added" target="_blank">articulo publicado por Tomas Mysik</a> nos muestra como van los primeros avances y nos permite <a href="http://bertram.netbeans.org/hudson/job/PHP-build/lastSuccessfulBuild/" target="_blank">probarlo</a> para ir depurando este modulo, cada vez son mas los desarrolladores de PHP que usan NetBeans y la verdad esta es una muy buena noticia, esperemos que el desarrollo sea rapido y lo tengamos para la version 6.9, saludos&#8230;</p><p><a href="http://blog.hectorbenitez.com/wp-content/uploads/2010/01/netbeans-6-8.png"><img class="aligncenter size-full wp-image-628" title="netbeans-6-8" src="http://blog.hectorbenitez.com/wp-content/uploads/2010/01/netbeans-6-8.png" alt="" width="473" height="300" /></a></p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2010/01/netbeans-y-zend-framework/feed/</wfw:commentRss> <slash:comments>3</slash:comments> </item> <item><title>Practical PHP Testing: EBook</title><link>http://blog.hectorbenitez.com/2009/12/practical-php-testing-ebook/</link> <comments>http://blog.hectorbenitez.com/2009/12/practical-php-testing-ebook/#comments</comments> <pubDate>Sat, 05 Dec 2009 18:03:10 +0000</pubDate> <dc:creator>Hector Benitez</dc:creator> <category><![CDATA[PHP]]></category> <category><![CDATA[PHPUnit]]></category> <category><![CDATA[testing]]></category><guid isPermaLink="false">http://blog.hectorbenitez.com/?p=582</guid> <description><![CDATA[Recientemente ha sido liberado una pequeña recopilación de post acerca de testing en PHP, estos artículos son de  Giorgio Sironi quie parece tener bastante experiencia en esto del testeo y de TDD , sin duda es un material bastante recomendable, el documento lo pueden descargar directamente de su blog, viene con ejercicios y un capitulo [...]]]></description> <content:encoded><![CDATA[<p>Recientemente ha sido liberado una pequeña recopilación de post acerca de <a title="testing" href="http://blog.hectorbenitez.com/tag/testing/">testing</a> en PHP, estos artículos son de  Giorgio Sironi quie parece tener bastante experiencia en esto del testeo y de TDD , sin duda es un material bastante recomendable, el documento lo pueden descargar directamente de su <a href="http://giorgiosironi.blogspot.com/2009/12/practical-php-testing-is-here.html" target="_blank">blog</a>, viene con ejercicios y un capitulo extra sobre teoria de TDD, para mi gusto un buen recurso, ojala que Giorgio pueda continuar con un buen trabajo sobre el&#8230;</p><p><a href="http://blog.hectorbenitez.com/wp-content/uploads/2009/12/practicalphptesting.png"><img class="aligncenter size-full wp-image-583" title="practicalphptesting" src="http://blog.hectorbenitez.com/wp-content/uploads/2009/12/practicalphptesting.png" alt="practicalphptesting" width="320" height="320" /></a></p>]]></content:encoded> <wfw:commentRss>http://blog.hectorbenitez.com/2009/12/practical-php-testing-ebook/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching 1/42 queries in 0.020 seconds using disk: basic
Object Caching 1111/1203 objects using disk: basic

Served from: blog.hectorbenitez.com @ 2012-02-07 02:24:23 -->
