Fuente: https://www.zend.com
Como convertirse en un "Desarrollador PHP Senior" y no morir en el intento... escrito por Enrique Place
El GOTO en PHP
En sí, hace muchos años que dejé de usar un goto cuando se prohibieron (hace casi 25 años aprendí a programar usando BASIC y GOTO, y posteriormente viví la evolución que llevó la prohibición del GOTO) y me sorprendió cuando lo revivieron de forma reciente en PHP 5.3.0, pero bueno, sigo la "vieja escuela", aún me parece innecesario y muy peligroso usar un goto... de todas formas no es tu culpa que ahora lo uses (aunque como regla, no todo lo que exista en el lenguaje, necesariamente es 100% recomendable usar para un buen diseño general o para POO en concreto).
Agrego más info sobre el GOTO, de casualidad llegué hoy leyendo otros temas:
Cito biografía de un grán científico de la computación: "Respecto a su carácter árido y ácido, conocidas son su oposición a la instrucción GOTO y al lenguaje BASIC ("mutila la mente más allá de toda recuperación")."
Cito: "A diferencia de la llamada a una función, no se requiere ningún tipo de preparación o estructura de código para utilizar un GOTO. Como resultado, es más sencillo obtener código inconsistente, incompleto o complicado de mantener. Justamente por ello en los años 60 y 70, cuando surgió la programación estructurada, la comunidad informática se expresó a favor de otras instrucciones de control (if ó bucles for y do/while) en lugar de GOTO.
Tal creencia está tan arraigada que el GOTO es muy criticado por los dedicados a la enseñanza de la programación, que lo suelen desaconsejar."
Esto es otra demostración el caos que en muchos sentidos existe en el lenguaje PHP, que luego de tantos años, ahora, agreguen otra vez el GOTO!!! ;-)
Saludos!
Instalar PHP 5.4 en Ubuntu 12.04
Como no es la primera vez que me lo preguntan, lo dejo documentado aquí, de todas formas, no es complicado hacerlo:
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5
Y listo, luego verifica en consola con un php -v ó un phpinfo() desde apache
Problemas: Si falla el xdebug luego de ejecutar php -v
Failed loading /usr/lib/php5/20090626+lfs/xdebug.so: /usr/lib/php5/20090626+lfs/xdebug.so:
cannot open shared object file: No such file or directory
PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
Hay que corregir la instalación de xdebug, ya que cambió el lugar donde se encuentra la librería xdebug.so
Pasos
Actualiza la base que te permite encontrar la ubicación de tu archivo (si haces un locate sin actualizar, te dirá una ubicación vieja)
sudo updatedb
Cuando termine de indexar, realiza la búsqueda de la librería
locate xdebug.so
Edita el archivo de configuración para ajustar la nueva ruta en
sudo vim /etc/php5/mods-available/xdebug.ini
agrega tu ruta actualizada, en este caso sería
zend_extension=/usr/lib/php5/20100525+lfs/xdebug.so
Finalmente, ejecuta php -v
PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
sudo add-apt-repository ppa:ondrej/php5
sudo apt-get update
sudo apt-get install php5
Y listo, luego verifica en consola con un php -v ó un phpinfo() desde apache
Problemas: Si falla el xdebug luego de ejecutar php -v
Failed loading /usr/lib/php5/20090626+lfs/xdebug.so: /usr/lib/php5/20090626+lfs/xdebug.so:
cannot open shared object file: No such file or directory
PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
Hay que corregir la instalación de xdebug, ya que cambió el lugar donde se encuentra la librería xdebug.so
Pasos
Actualiza la base que te permite encontrar la ubicación de tu archivo (si haces un locate sin actualizar, te dirá una ubicación vieja)
sudo updatedb
Cuando termine de indexar, realiza la búsqueda de la librería
locate xdebug.so
Edita el archivo de configuración para ajustar la nueva ruta en
sudo vim /etc/php5/mods-available/xdebug.ini
agrega tu ruta actualizada, en este caso sería
zend_extension=/usr/lib/php5/20100525+lfs/xdebug.so
Finalmente, ejecuta php -v
PHP 5.4.12-1~precise+1 (cli) (built: Feb 25 2013 17:23:55)
Copyright (c) 1997-2013 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2013 Zend Technologies
with Xdebug v2.2.1, Copyright (c) 2002-2012, by Derick Rethans
Listo, ya no falla xdebug! ;-)
Saludos!
Zend Framework 1 no está muerto, se sigue actualizando!
Recientemente actualizada la rama 1 a la versión 1.12.1, la que incluye más de 50 correcciones, entre ellas, además de fallos, varios problemas de seguridad importantes, relacionados con:
Fuente: akrabat.com
- correcciones de seguridad en Zend_Feed_Rss y Zend_Feed_Atom
- se sube el mínimo de versión requerida de PHP: 5.2.11
- Se elimina Zend_Markup_Parser_Textile
El plan de actualización, mejoras y soporte se mantendrá hasta el año 2014
Se puede hacer un seguimiento de todo lo que se está trabajando a través del issue tracker
Fuente: akrabat.com
Disponible nueva versión para testear: PHP 5.5.0 Alpha1
Anuncia el equipo de desarrollo de PHP que se encuentra disponible para testear la versión 5.5.0alpha1 y con esto, marcan el inicio del ciclo de desarrollo de la rama 5.5.0. Avisan que tengan cuidado ya que es una versión de pruebas, no es para usar en producción, e invitan a reportar los bugs que encuentren.
Las nuevas características (lista no completa) son:
Indispensable. ;-)
Fuente:
PHP 5.5.0 Alpha1
Las nuevas características (lista no completa) son:
- support for Generators,
- a new password hashing API,
- support for finally in try/catch blocks
- support for list() in foreach,
- constant array/string dereferencing,
- ext/intl improvement.
Indispensable. ;-)
Fuente:
PHP 5.5.0 Alpha1
Beta 2 de NetBeans 7.3!
NetBeans 7.3 Beta2 ya está disponible y ya lo puedes descargar.
Listado de mejoras generales para PHP
Lo vengo probando desde hace un tiempo y tiene muchas mejoras, si bien están las más evidentes listadas y parecen pocas, hay que tomarse un tiempo y analizar las nuevas configuraciones que se viene habilitando, por ejemplo, una que me parece muy útil, la posibilidad de decirle que automáticamente te indente el código una vez que grabas el código, ó, si estás versionando y no quieres indentarlo todo (por que para el svn quedará como si lo que cambió fue todo y no se verán claramente las modificaciones, y el resto de tu equipo te odiará), que solo indente el código nuevo que agregas.
Listado de mejoras generales para PHP
- Parsers for Namespaced Annotations (Symfony 2, Doctrine 2, etc.),
- Basic Composer Integration (Dependency Manager for PHP),
- Twig Code Completion (with documentation),
- Smarty Braces Matching for Related Tags,
- Smarty Parser Errors of Unmatched Tags.
Lástima que aún no tiene soporte para ZF2, pero aún así, toda la ayuda con los namespace es muy bienvenida.
Fuente: Netbeans
Nueva versión: Netbeans 7.3 Beta!
Para todos los que usamos IDEs abiertos, Netbeans es una muy buena opción para trabajar tanto en Java como PHP y hasta usando frameworks como Zend Framework ó Symfony, o si quieres usar Doctrine. Ya desde la versión anterior soporta namespaces, lo cual te soluciona muchos problemas a la hora de estar completando las rutas y verificando si está todo correctamente especificado.
Herramienta muy recomendada, para trabajar en distintos lenguajes e instalar en distintos sistemas operativos, y que también sugerimos en todos los cursos.
Cambios más importantes relaciones con PHP
- Parsers for Namespaced Annotations (Symfony 2, Doctrine 2, etc.)
- Basic Composer Integration (Dependency Manager for PHP)
- Twig Code Completion (with documentation)
- Smarty Braces Matching for Related Tags
- Smarty Parser Errors of Unmatched Tags
Fuente: Netbeans.org
Nueva versión: Zend Framework 2.0.3!
Nueva versión de Zend Framework 2 disponible (la cual incorporaremos en los cursos que iniciaremos en breve):
Fuente: ZF Blog
Zend Framework 2.0.3 Released!
The Zend Framework community is pleased to announce the immediate availability of Zend Framework 2.0.3! Packages and installation instructions are available at:Changelog
This release included 115 changes, ranging from minor docblock improvements to bugfixes. The full list is as follows:- 2244: Fix for issue ZF2-503
- 2318: [WIP - help] Allow to remove decimals in CurrencyFormat
- 2363: Hotfix db features with eventfeature
- 2380: ZF2-482 Attempt to fix the buffer. Also added extra unit tests.
- 2392: Update library/Zend/Db/Adapter/Platform/Mysql.php
- 2395: Fix for http://framework.zend.com/issues/browse/ZF2-571
- 2397: Memcached option merge issuse
- 2402: Adding missing dependencies
- 2404: Fix to comments
- 2406: No, sir, that's not a boolean.
- 2416: Fix expressionParamIndex for AbstractSql
- 2420: Zend\Db\Sql\Select: Fixed issue with join expression named parameters overlapping.
- 2421: Update library/Zend/Http/Header/SetCookie.php
- 2422: fix add 2 space after @param in Zend\Loader
- 2423: ManagerInterface must be interface, remove 'interface' description
- 2425: Use built-in Travis composer
- 2426: [BC] Remove need of setter in ClassMethods hydrator
- 2432: Prevent space before end of tag with HTML5 doctype
- 2433: fix for setJsonpCallback not called when recieved JsonModel + test
- 2434: added phpdoc in Zend\Db
- 2437: Hotfix/console 404 reporting
- 2438: Improved previous fix for ZF2-558.
- 2440: Turkish Translations for Captcha and Validate
- 2441: Allow form collection to have any helper
- 2516: limit(20) -> generates LIMIT '20' and throws an IllegalQueryException
- 2545: getSqlStringForSqlObject() returns an invalid SQL statement with LIMIT and OFFSET clauses
- 2595: Pgsql adapater has codes related to MySQL
- 2613: Prevent password to be rendered if form validation fails
- 2617: Fixed Zend\Validator\Iban class name
- 2619: [Fix/Master] Form enctype fix when File elements are within a collection
- 2620: [Fix/Master] InputFilter/Input when merging was not using raw value
- 2622: Added ability to specify port
- 2624: [Fix/Master] Form's default input filters added multiple times
- 2630: fix relative link ( remove the relative links ) in README.md
- 2631: Update library/Zend/Loader/AutoloaderFactory.php
- 2633: fix redundance errors "The input does not appear to be a valid date" show twice
- 2635: Fix potential issue with Sitemap test
- 2636: add isset checks around timeout and maxredirects
- 2641: hotfix : formRow() element error multi-checkbox and radio renderError not shown
- 2642: Fix Travis build for CS issue
- 2643: fix for setJsonpCallback not called when recieved JsonModel + test
- 2644: Add fluidity to the prepare() function for a form
- 2652: Zucchi/filter tweaks
- 2665: pdftest fix
- 2666: fixed url change
- 2667: Possible fix for rartests
- 2669: skip whem gmp is loaded
- 2673: Input fallback value option
- 2676: mysqli::close() never called
- 2677: added phpdoc to Zend\Stdlib
- 2678: Zend\Db\Adapter\Sqlsrv\Sqlsrv never calls Statement\initialize() (fix within)
- 2679: Zend/Log/Logger.php using incorrect php errorLevel
- 2680: Cache: fixed bug on getTotalSpace of filesystem and dba adapter
- 2681: Cache/Dba: fixed notices on tearDown db4 tests
- 2682: Replace 'Configuration' with 'Config' when retrieving configuration
- 2683: Hotfix: Allow items from Abstract Factories to have setShared() called
- 2685: Remove unused Uses
- 2686: Adding code to allow EventManager trigger listeners using wildcard identifier
- 2687: Hotfix/db sql nested expressions
- 2688: Hotfix/tablegateway event feature
- 2689: Hotfix/composer phpunit
- 2690: Use RFC-3339 full-date format (Y-m-d) in Date element
- 2691: join on conditions don't accept alternatives to columns
- 2693: Update library/Zend/Db/Adapter/Driver/Mysqli/Connection.php
- 2694: Bring fluid interface to Feed Writer
- 2698: fix typo in # should be :: in exception
- 2699: fix elseif in javascript Upload Demo
- 2700: fix cs in casting variable
- 2705: Fix french translation
- 2707: Improved error message when ServiceManager does not find an invokable class
- 2710: #2461 - correcting the url encoding of path segments
- 2711: Fix/demos ProgressBar/ZendForm.php : Object of class Zend\Form\Form could not be converted to string
- 2712: fix cs casting variable for (array)
- 2713: Update library/Zend/Mvc/Service/ViewHelperManagerFactory.php
- 2714: Don't add separator if not prefixing columns
- 2717: Extends when it can : Validator\DateStep extends Validator\Date to reduce code redundancy
- 2719: Fixing the Cache Storage Factory Adapter Factory
- 2728: [Bug][Mail] Bad Regex for Content Type header
- 2731: Reset the Order part when resetting Select
- 2732: Removed references to Mysqli in Zend\Db\Adapter\Driver\Pgsql
- 2733: fix @package Zend_Validate should be Zend_Validator
- 2734: fix i18n @package and @subpackage value
- 2736: fix captcha helper test.
- 2737: Issue #2728 - Bad Regex for Content Type header
- 2738: fix link 'quickstart' to version 2.0
- 2739: remove '@subpackage' because Zend\Math is not in subpackage
- 2742: remove () in echo-ing
- 2749: Fix for #2678 (Zend\Db's Sqlsrv Driver)
- 2750: Adds the ability to instanciate by factory to AbstractPluginManager
- 2754: add the support to register module paths over namespace
- 2755: remove Zend\Mvc\Controller\PluginBroker from aliases in "$defaultServiceConfig"
- 2759: Fix Zend\Code\Scanner\TokenArrayScanner
- 2764: Fixed Zend\Math\Rand::getString() to pass the parameter $strong to ::getBytes()
- 2765: Csrf: always use dedicated setter
- 2766: Session\Storage: always preserve _REQUEST_ACCESS_TIME
- 2768: Zend\Validator dependency is missed in Zend\Cache composer.json
- 2769: change valueToLDAP to valueToLdap and valueFromLDAP to valueFromLdap
- 2770: [WIP] Memcached
- 2775: Zend\Db\Sql: Fix for Mysql quoting during limit and offset
- 2776: Allow whitespace in Iban
- 2777: Fix issue when PREG_BAD_UTF8_OFFSET_ERROR is defined but Unicode support is not enabled on PCRE
- 2778: Undefined Index fix in ViewHelperManagerFactory
- 2779: Allow forms that have been added as fieldsets to bind values to bound ob...
- 2782: Issue 2781
Thank You!
Many thanks to all contributors to this release!Reminder
Maintenance releases happen monthly on the third Wednesday. Additionally, we have the next minor release, 2.1.0, slated for sometime next month.Fuente: ZF Blog
Promo: hasta el 10 de Octubre paquetes de cursos al precio de uno!
Iniciamos preventa con descuentos para paquetes de cursos Octubre 2012, descuentos válidos solo hasta el 10 de octubre
Paquetes
1) CURSO COMPLETO PHP = POO + UML + LIBRO + Intro PHP 5.3/4
2) CURSO DIRECTO ZF2 = Intro PHP 5.3/4 + Intro ZF 2
3) CURSO COMPLETO ZEND = Intro ZF 1 + Intro PHP 5.3 + Intro ZF 2
Nuevo: Introducción a Zend Framework 2
Destinado a todos todos los alumnos que ya han participado de los cursos de POO / UML / PHP, Introducción Zend Framework 1.11, Zend Framework Avanzado y Actualización PHP 5.3 / 4
Cursos con descuentos del 15%
Para los cursos de:
- Análisis y Diseño Orientado a Objetos
- Patrones de Diseño
Inicio sujeto a cupo, PROMO válida hasta el 10 de Octubre
Más información en surforce.com
En caso de decidirte, la compra la debes hacer a través de usuarios.surforce.com
Cualquier duda puedes enviarnos un mail a info en surforce.com
Encuesta: ¿Qué versión de PHP estás usando actualmente?
Creo que a todos nos despierta muchas dudas e inseguridades tal fragmentación de versiones de PHP... que lo más interesante es que ya pasamos por una campaña mundial para motivar que todos migráramos a PHP5 y dejáramos atrás PHP4 (2007) y el resultado de esta campaña ya quedó obsoleto.
Versiones disponibles
- PHP 5.4.*
- PHP 5.3.*
- PHP 5.2.*
- PHP 5.1.*
- PHP 5.0.*
- PHP 4.*
Ahora bien, si prestamos atención, recientemente salió PHP5.4, que estimo será una versión difundida y ampliamente utilizada (según dicta la experiencia) dentro de 2 años. La versión 5.3, si bien ya tiene un poco más de 2 años (mediados 2009), está empezando a aparecer en los servidores de hosting y en las instalaciones más estables de GNU/Linux, pero está aún lejos de ser común ver esta versión, creo que en la actualidad lo más probable es encontrarnos con PHP 5.2.
¿Debemos hacer otra campaña de migración?
Por lo pronto creo que, o mejoramos la forma de actualizar PHP para que sea mucho más fácil y transparente, y no dependa de un empaquetado o una instalación / migración (sea una simple actualización que se pueda hacer "en el aire / on the fly"), vamos a tener que hacer OTRA campaña de "migración" (que como toda migración, esto significa sacrificio, costos, problemas, no hay migraciones indoloras, o no se llamarían migraciones), a por lo menos PHP 5.3 (principalmente por hacer el quiebre con los namespaces).
Encuesta
Así que hacemos una encuesta pública en el margen derecho del blog con la pregunta , ¿qué versión de PHP estás usando actualmente? ... usando realmente, no que quieras usar a futuro... y es algo que también nos determina y clasifica en nuestros conocimientos, ya que si no usamos PHP 5.3 en adelante, quiere decir que aún no empezaste a trabajar con namespaces (y se entiende, no todo el mundo puede tener su servidor propio, no siempre uno puede actualizar el servidor de producción, muchas veces se depende de un hosting externo y no siempre tendremos la última versión disponible).
Así que hacemos una encuesta pública en el margen derecho del blog con la pregunta , ¿qué versión de PHP estás usando actualmente? ... usando realmente, no que quieras usar a futuro... y es algo que también nos determina y clasifica en nuestros conocimientos, ya que si no usamos PHP 5.3 en adelante, quiere decir que aún no empezaste a trabajar con namespaces (y se entiende, no todo el mundo puede tener su servidor propio, no siempre uno puede actualizar el servidor de producción, muchas veces se depende de un hosting externo y no siempre tendremos la última versión disponible).
Visto en perspectiva, es complicado actualizarse y aprovechar lo último que nos ofrece PHP, ya que la pregunta es inmediata... a cual versión? (no tiene sentido decir la última si no sabes cuando tendrás acceso a la misma para probar todas sus características)
Qué uso?
Me estoy moviendo en dos versiones, PHP 5.2.* y PHP 5.3.* y haciendo pruebas con PHP 5.4. Particularmente, por un tema de "sistemas legados" y complejidad de actualización de servidores en producción, mayormente los sistemas están sin namespaces (5.2) y los sistemas nuevos se están desarrollando con namespaces (5.3).
Veremos cómo resulta la encuesta, a ver si está dentro de los parámetros que espero: creo que un buen grupo estará en PHP 5.2, muy tibio 5.3, pero la mayoría de 5.1 para abajo... espero equivocarme ;-)
Saludos! ;-)
Suscribirse a:
Entradas (Atom)
Entradas populares
-
He visto mucha documentación que habla sobre el tema de los métodos "getter / setter", o traducido al castellano los métodos ...
-
Esto es lo que pasa cuando tienes entornos que no son homogéneos y cada aplicación se encuentra ubicada en distintas márgenes de un "rí...
-
Uno de los problemas que me he encontrado con la versión 5 de PHP es la falta de la representación de los "paquetes" desde el prop...
-
Este es un resumen de conclusiones que se vertieron en una discusión sobre el tema en Foros de Web , donde se plantea la duda de si PHP5 ...
-
Este es un ejemplo publicado a partir de la duda de un usuario , y como son preguntas que se hacen reiteradamente, les dejo el ejemplo aquí ...
-
Esta reflexión se la escribo a todos los "Programadores PHP": Al día de hoy la mayoría de los institutos o universidades de muchos...
-
El Patrón " Singleton " sirve para cuando buscamos restringir la creación de instancias de un objeto, obligando que solo se pueda ...
-
Hace un tiempo que vengo recomendando esta presentación como punto de partida para definir un estándar de desarrollo en una empresa. En ambi...
-
Bueno, luego de revisarlo una y otra vez (y otra vez) ya se encuentra terminada la primer versión del libro que junta toda la experiencia ac...
-
Estoy viendo muy seguido en foros que frecuento regularmente a muchos programadores que quieren dar " el gran salto " y evolucion...