Programar en Linux
Moises Alberto Lindo Gutarra
mlindo en gmail.com
Vie Oct 20 17:48:15 CLST 2006
PHP5 ya trae el manejo de excepciones, pero ya no es compatible con
versiones anteriores, realmente php deja mucho que desear en comparacion
con otros. He programado harto, mas de cuatro años en PHP, asi que lo
conozco bien asi como C++, C# y Java. Si tienes la opcion de elegir un
lenguaje no elijas PHP, solo usalo si el cliente ama este lenguaje y cree en el.
2006/10/20, Ricardo Mun~oz A. <rmunoz en pjud.cl>:
> Franco Catrin wrote:
> > El vie, 20-10-2006 a las 13:00 -0300, Ricardo Mun~oz A. escribió:
> >
> >> Franco Catrin wrote:
> >>
> >
> >
> >>> Las pruebas son radicalmente distintas. En el caso de un lenguaje
> >>> decente, las pruebas son enfocadas en cosas funcionales, ver si la
> >>> aplicación hace lo que tiene que hacer.
> >>>
> >>> .... en PHP _además_ hay que probar si el _lenguaje_ hace lo que tu
> >>> necesitas que haga ....
> >>>
> >>>
> >> tienes algun ejemplo concreto?? (para entender a que te refieres)
> >>
> >
> > Puede ser algo tan simple como esto:
> >
> > $variable = 400;
> > echo $varable + 1;
> >
> > y no, no hay que ser newbie para cometer un error asi, es muy facil que
> > ocurra.
>
> hmm...
>
> > Entonces el foco no está en resolver el problema, sino en
> > además evitar que se te pasen errores como ese.
> >
> > La unica forma de asegurarse de que no tengas errores de ese tipo es
> > haciendo pruebas de cosas que no son funcionales!!
> >
> > Otro ejemplo menos trivial, donde tampoco te ayuda el lenguaje
> >
> > class Object {
> > var $title;
> > function setTitle($title) {
> > $this->title = $title;
> > }
> >
> > function display(){
> > echo $this->title;
> > }
> > }
> >
> > function createInstance() {
> > global $global;
> > $local = new Object();
> > $local->setTitle("uno");
> > $global = &$local;
> > }
> > $global = new Object();
> > $global->setTitle("cero");
> > $global->display();
> > createInstance();
> > $global->display();
> >
> > En este caso $global no tendrá acceso al objeto creado dentro de la
> > funcion, curiosamente queda apuntando al objeto inicial, el que dice
> > cero.
>
> leer documentacion ->
> http://cl.php.net/manual/es/language.references.arent.php
>
> > Si cambio $global = "aaa" y despues hago echo $global desde
> > fuera, si toma el objeto que estaba dentro de la funcion (seguramente lo
> > copia). Pero lo que yo necesito es la referencia al objeto. Por
> > ejemplo para que punteros a ese objeto sigan siendo validos, entonces no
> > sirve la copia.
> >
>
> prueba con:
>
> class Object
> {
> var $title;
> var $text;
>
> function setTitle($title)
> {
> $this->title = $title;
> }
>
> function display()
> {
> echo "\ntitulo: ".$this->title;
> echo "\ntexto: ".$this->text;
> }
>
> function setText($text)
> {
> $this->text = $text;
> }
>
> }
>
> function createInstance()
> {
> $local = new Object();
> $local->setTitle("uno");
> $local->setText("prueba...");
>
> $GLOBALS['global']=&$local;
> }
>
> $global = new Object();
>
> $global->setTitle("cero");
> $global->display();
>
> createInstance();
> $global->display();
>
> > Otro accidente que puede ocurrir aca y que el lenguaje no va a hacer
> > nada por mi, es que dentro del metodo display omita $this->, ya que
> > estoy dentro del scope de la clase, pero para php es $title se convierte
> > en una variable nueva
> >
> > Tampoco tienes un manejo seguro de excepciones, obligar al programador
> > que se haga cargo de ejecutar código en donde puede ocurrir una
> > excepcion, y darle oportunidad de hacer una limpieza posterior (como lo
> > bloques try/catch/finally de C# y Java)
> >
>
> actualizate, PHP5 si trae el manejo de excepciones ->
> http://cl.php.net/manual/es/language.exceptions.php
>
> --
> Ricardo Mun~oz A.
> Usuario Linux #182825 (counter.li.org)
>
Más información sobre la lista de distribución Linux