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) From [EMAIL PROTECTED] Fri Oct 20 17:47:02 2006 From: [EMAIL PROTECTED] (Cristian Rodriguez) Date: Fri Oct 20 17:46:21 2006 Subject: Programar en Linux In-Reply-To: <[EMAIL PROTECTED]> References: <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> <[EMAIL PROTECTED]> Message-ID: <[EMAIL PROTECTED]> El 20/10/06, Alvaro Herrera<[EMAIL PROTECTED]> escribió: > Mira aca: > http://l10n.postgresql.cl/es/code/ > alvaro: Aqui estas mezclando peras con manzanas, en una rapida mirada, esta hecho usando el **framework** django, eso no esta usando python **en solitario** si quieres hacer una comparacion, entonces comparalo con una aplicacion hecha con un framework de similares caracteristicas en PHP, como symphony o prado. Es la misma comparacion absurda que hacen cuando comparan ruby on rails con PHP. framework !== lenguaje.