note 11428 rejected from language.oop by sander
| From: | sander@php.net | Date: | Sat, 06 Apr 2002 18:59:09 +0000 |
| Subject: | note 11428 rejected from language.oop by sander | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-28734@lists.php.net to get a copy of this message | ||
[Nota del editor: Deberias de usar:
global $HTTP_POST_VARS;
en tu funcion.
Objetos/clases son constructos autonomos y encapsulados, asi que variables globales deberan ser
importadas explicitamente. Creo que esto es una caracteristica basica de lenguajes OO.
Fijate tambien en tu configuracion - Vease: http://www.php.net/manual/en/language.variables.external.php
]
Mas sobre objetos y clases:
Despues de dar trescientas mil vueltas a un trozo de codigo escrito para PHP ver 4.0.4pl1 he llegado
a la conclusion de que si hacemos referencia a variables globales como HTTP_POST_VARS desde dentro
de una clase, una instancia de esta será incapaz de usarlas, es decir, las variables globales no
estaran en su contexto. Por ejemplo, supongamos la siguiente clase:
class foo{
var $foovar1;
var $foovar2;
....
funcion foofuncion1(){
....CODE....
if(isset($HTTP_POST_VARS))
....CODE....
}
y ahora supongamos que hacemos uso
de la clase en un script diferente:
<?php
include("foo.class");
$foo=new fooclass();
$foo->foofunction1();
?>
misteriosamente, la funcion foofuncion1 no podrá funcionar correctamente ya que
no existe el array HTTP_POST_VARS para esa instancia de fooclass.
Creo que más que una nota deberia ser un error, ya que de esto se deduce que el codigo incluido
mediante una directiva include (o require, tambien lo probe) no hereda el contexto del código que
la incluye (en este caso el script desde el que si es posible
hacer referencia al array HTTP_POST_VARS).
Saludos desde Cordoba
Gracias Jesus por tu indicacion, aunque se ve que no me entendieron.....