Entries Tagged as 'PHP'

O, rly?

Este post es como un edit del post anterior.

Otro compa que leyó el post anterior me hizo notar que hago demasiado enfasis en “defender” a java, y tiene razon.

No quise editar el post sino hacer un edit o en este caso hacer otro post (para aquel par de personas que lo hayan leido ja) comentando que mi intencion original era causar un poco de discusion y escuchar argumentos acerca de preferencias de tales lenguajes, no tanto “mostrar desprecio sobre PHP” ni “defender” tanto a java. :)

Sigo pensando que cualquier lenguaje es mejor para el proposito hacia cual fue diseñado; extraño java, pero no le “hago el feo” a PHP.  De hecho, me siento mas comodo con PHP por razones de familiaridad en estos momentos; ojala algun javero pudiera postear algun comentario, pero creo que este blog ya esta un poco empolvado.

de PHP y cosas peores

… y de java vs PHP

Hablando con un compa, acerca de que si PHP es mejor que java, o viceversa, se hizo un interesante y largo tema de discusión, que tal vez sea bueno como tema alrededor de cerveza ( entre geeks tal vez ).

Todo comenzó con la pregunta: es java más rapido que PHP?

:) No es mi intención defender indiscriminadamente a java, por el hecho de ser el lenguaje que más llegue a conocer, ademas de C++, pero tenia que postear mis comentarios al respecto, y se acepta cualquier comentario.

Personalmente, la conclusión final es que java si es mejor y más rapido de PHP, si se saben aprovechar los recursos, y hablando de manera genera. Java tiene estándares bien definidos, cosa que PHP esta “muy verde” todavía, aún en su version 5; ambos funcionan sobre un motor que los hace multiplataforma; ambos son “hijos de C” ( aunque PHP para mi es como un tataranieto de C );

Pero para fines prácticos, puedo decir que cada lenguaje es mejor dependiendo del uso que le quieras dar: por definición, PHP es un scripting language, mientras que Java es un Lenguaje de programación orientado a objetos. PHP no nació para hacer aplicaciones, sino páginas personales o sitios pequeños con el que su sintaxis te permita desarrollar rápidamente y con fácil mantenimiento. Java tiene estándares para desarrollo de aplicaciones multi-capas, soporte de varios servidores de aplicaciones, y hasta tiene su propio scripting language que forma parte de toda una aplicación.

Claro que, PHP es más rápido, si hacemos un script que te genere un par de objetos clases que te representen datos, guardamos los datos, los leemos, y los mostramos, y hacemos lo mismo con los estándares de java, en un benchmark se demostraría que PHP se ejecuta más rapido. Pero si implementas codigo por separado, con el patrón de MVC, en PHP, esa sería otra historia.

Y la verdad, uno diría, porqué tantos sitios “grandes” usan PHP, y mantienen su uso hasta ahora ? En lo personal, pienso que es por la misma razón que yo desarrollo en PHP: para desarrollar aplicaciones de una manera más rápida entre equipos moderados de trabajo, modificaciones rápidas y extremas in-situ, rápido mantenimiento y mucho soporte de foros y sitios en internet.

Al menos me mantengo tranquilo, sé que hay algun lenguaje por ahi esperándonos que nos pueda ser más útil en su momento.

PHP y static, el viejo dilema

Como ya habia discutido con algunos amigos acerca de para que demonios sirven los static en PHP, retomé el dilema y me puse a buscar mas sobre usos de estaticas en PHP ( la queria particularmente para hacer un singleton ). Me volví a encontrar con lo mismo, solamente paginas PHP con ejemplos, la documentación oficial y los usos y scopes que pueden tener las variables. Pero fue hasta que bajé un wrapper de mysqli en PHP, que me hizo ver las cosas desde otra perspectiva.

Tal y como habia investigado, las variables estáticas en PHP son estáticas solamente durante la vida del script. Malamente yo estoy mas acostumbrado y tengo mas experiencia en java, por lo que tambien estoy acostumbrado a que las variables estáticas mantengan su valor mientras la aplicación esté corriendo. Pero en php, si tienes por decir, dos scripts PHP a.php y b.php, y tenemos el siguiente código en a.php:

class singleton {        private static $instancia ;

private $visits;

private function __construct() {

                $visits = 0 ;

        }

public static function GetInstance($vendor) {

                // fijate a ver si tiene instancia

                if ( !isset( self::$instancia ) ) {

                        echo "no tenia una instancia ... creando una :)  ";

                        self::$instancia = new singleton( );

                }

                return self::$instancia;

}

public function masVisitas( ) {

                $this->visits++;

        }

public function getVisitas( ){

                return $this->visits;

        }

}

$x = singleton::GetInstance(  );

        $x->masVisitas( );

        echo " en a tenemos " . $x->getVisitas( );

y desde b.php quieres acceder el singleton,

$b = singleton::GetInstance( );

$b->masVisitas( );

echo " desde b.php tenemos " . $b->getVisitas( );

éste se vuelve a cargar de nuevo. Yo no le veía el sentido de tener un singleton si cada vez que cargas otra nueva página se vuelve a inicializar, se vuelve a crear una nueva instancia, y se meten sus datos como debe hacerlo; yo decía, ¿donde está lo estático? :-(   Si quieres hacer una cache o un arreglo de datos que se pueda acceder desde cualquier parte del sitio, como este claro ejemplo de número de visitas, en PHP simplemente n o  s e  p u e d e.  Por alguna parte tambien me encontré la implementación de un singleton que lo que hacia era serializar los datos que quieres guardar en tu arreglo/variable de tu singleton, y guardarlos en un archivo cada vez que terminaba el script; y leerlos al abrir otro PHP y cargarse de nuevo.  Obvio, tambien se podria hacer con base de datos, pero el objetivo era tener todo esto en memoria.

Para esto me puse a investigar sobre mysqli, qué es, con qué se come y como se usa ( tal vez ponga un post de esto mas adelante ).  Me topé con un singleton en un wrapper de mysqli que me encontré (lizdb, se puede encontrar en sourceforge ), y pues abrí los ojos: fue cuando me di cuenta que ‘para eso puede servir’, y la base de datos es un claro ejemplo; es decir, cuantas veces en un script accedes base de datos ? más de una; si lees algo para el header, despues si sacas algo de info del usuario, tema o cosa que este relacionado el script, datos estadisticos, etc.  Todo esto se puede usar utilizando la misma instancia de alguna conexión de base de datos, e internamente lo único que va haciendo es ir ejecutando query tras query, en lugar de hacer N instancias y por consiguiente N conexiones a base de datos para cada query.  En lo que ayuda, es el hecho de que PHP puedes tener anidados 100 includes, y no puedes controlar cuantas instancias tienes de qué cosas; ahí es donde es práctico el singleton con su PHP-style static.

Bueno, solo fue algo que se me vino a la mente, y quería postearlo aquí, ya que no encontré mucho sobre esto como me imaginaba que hubiera. Saludos!

los DAO y PHP

Actualmente usamos PHP para desarrollar. Las ventajas principales de PHP se puede ver facilmene: entre otras cosas, tiene bastante soporte.

PHP originalmente era el acrónimo de Personal Home Page, lo cual nos puede hablar no muy bien de este lenguaje para desarrollo de aplicaciones web o sitios de dimensiones considerables. Ahora, parece que le cambiaron el significado al acrónimo recursivo “PHP: Hypertext Preprocessor”. Cual sea el significado, ha evolucionado bastante, al grado de tener su propio ‘engine’ ( zend ) al estilo de VM, y diseñado para poder desarrollar orientado a objetos, de una manera mas avanzada ( PHP 5 ). Despues de ver varios debates sobre PHP y otros lenguajes, quedé de acuerdo con que PHP aun le falta mucho para mejorar su API, tienen muchas inconsistencias en su nomenclatura de funciones, puedes enredarte un poco al estar depurando si tienes que estar siguiendo archivos que estan incluidos como locos, o puedes volverte loco al depurar un script que tenga todo mezclado ( base de datos, logica, diseño, evaluacion de formas, etc ), aunque esto puede suceder en cualquier otro lenguaje ja!.

Lo bueno de PHP, es que como decía, con bastante soporte, ya hay funciones para todo ( casi les falta funciones como fart( ) o getCoke ( $flavor ) ), soluciones para casi toda situacion, estan las librerias PEAR, y mucho soporte de PHP en foros y su propio sitio web; aunque esto ultimo de forosy tips y ejemplitos pueden ser en algunos casos malos, por enseñar practicas no-muy-buenas. Pero bueno…

El caso es que a como está PHP en este punto, se pueden hacer DAOs, los cuales son patrones de J2EE, pero igual, se puede implementar como muchos otros patrones. El detalle es, es bueno implementarlo? Uno de los detalles que vi en los debates PHP/Java, es que PHP termina siendo mas rapido ( hasta comprobado con benchmarks ), puesto que tienes la logica de base de datos, logica de negocios e interfaces de usuarios muy unidos entre si; aunque pueden estar separados por clases, todo se incluye y queda donde mismo, se compila el script, se ejecuta y voilá; en java tenemos que si son llamadas de RMI, que se tienen que crear los objetitos, los POJOs, llamar a la otra capa, la cual tiene que regresar la info, populando arreglos de los objetitos, y despues utilizarlos en algun controlador, para despues poderlos utilizar. Ok, esta bien organizado, pero segun tiene el overhead de hacer todo esto. Volviendo al detalle de los DAO, si se implementa en PHP, podemos caer en lo mismo: tienes una clase DAO que te envuelve las llamadas a base de datos de cierto tipo de objeto, otro objeto para conexion a base de datos, el controlador del objeto, para esto tenemos los objetitos ( que en una pagina los nombraban value objects o VO, pero nosotros los bautizamos como POPOs ), y sobre esto el manejador de lo que estamos haciendo, y sobre esto el script para el cliente que a su vez manda llamar el generador de templetes ( smarty ) … aaaargh :s …. caes de nuevo en J2EE, pero mas bien seria algo como PHP5EE jaja. Entonces, resulta esto peor que manejar PHP de la manera ‘clasica’? la ventaja de hacerlo asi, es que tienes la flexibilidad de cambiarlo todo y re-juntar muchas de las cosas sin perjudicar tiempo de desarrollo ni caer en errores criticos que te consuman tiempo y que les salgan al usuario final.

Pero ese es el dilema por el momento, y en verdad no he encontrado mucha informacion acerca de si es mejor o no, algunos dicen que no es bueno hacer “java” en PHP, mientras otras partes dicen que PHP esta lo suficiente maduro para esto y mas … seria bueno saber opiniones y comentarios :)

Argumentos, tipos, PHP y cosas ( retro )

Despues de varios años, parece que ahora si voy a empezar a postear en mi propio blog. Mi primer “blog” fue en realidad fue un sitio de geocities (ahora parte de yahoo), alla en los 90s ( que por cierto ahi anda circulando en internet ), y en otro sitio cuyo nombre no recuerdo por ahora ( fortunecitiy ), en los tiempos en que lo mas fregón era utilizar el ICQ, el hotmail aun no agarraba fama, los midis eran la musica que buscaba para bajar, y jpges, el mIRC era el cliente de IRC mas popular y todos se ponian a chatear con ése, principalmente en dalnet, y que por cierto bloquearon a todo el dominio de telmex ( el cual era el 95% de los ISP en mexico, yo creo );
Y aqui esta mi primer “post”, porque no creo que cuente cualquier comentario o info que hubiera puesto en ningun social network.
El proposito de este primer post era comentar sobre PHP y como esta cambiando, y tomando forma de Java, aunque algunas cosas las disfrazan solamente, tal vez para que no se vea como muy pirata o algo. Ya PHP5 tiene programacion orientada a objetos mas decente, manejo de excepciones, argumentos de funciones con tipo para argumentos de tipo objeto, y algunas dos o tres ondas que mas adelante voy a postear. Es interesante PHP, me gusta: tiene bastantes librerias ya hechas, listas para usarse; algunas
funciones que trae ya te hacen todo y te deja todo en bandeja de plata, instalacion y configuraciones mas que sencillas, y bastante soporte.
Pero java es java, y quien mejor que el compilador te diga cuando tengas un error, en lugar de un usuario. =) Ahora mi enfoque es PHP, pero java lo sigo viendo como un lenguaje que no se debe dejar.
Y bien, este es el fin del primer post … mucho trabajo por hacer.