Pregunta

En PHP, ¿cómo se usa un $ var externo para usar dentro de una función en una clase? Por ejemplo, digamos que $ some_external_var establece en verdadero y tiene algo así como

class myclass {
bla ....
bla ....

function myfunction()  {

  if (isset($some_external_var)) do something ...

   } 

}


$some_external_var =true;

$obj = new myclass();
$obj->myfunction();

Gracias

¿Fue útil?

Solución

Global $ some_external_var;

function myfunction()  {
  Global $some_external_var;
  if (!empty($some_external_var)) do something ...

   } 

}

Pero como Global lo configura automáticamente, verifique si no está vacío.

Otros consejos

Deberá usar el global palabra clave dentro de su función, para hacer que su variable externa sea visible para esa función.

Por ejemplo:

$my_var_2 = 'glop';

function test_2()
{
    global $my_var_2;
    var_dump($my_var_2);  // string 'glop' (length=4)
}

test_2();

También puede usar la matriz $ GLOBALS , que siempre está visible, incluso dentro de las funciones.


Pero generalmente no se considera una buena práctica usar variables globales: ¡sus clases no deberían depender de algún tipo de material externo que pueda o no estar allí!

Una mejor manera sería pasar las variables que necesita como parámetros, ya sea a los propios métodos o al constructor de la clase ...

eso es un mal diseño de software. Para que una clase funcione, debe proporcionarse con datos. Entonces, pase esa var externa a su clase, de lo contrario, creará dependencias innecesarias.

¿Por qué no simplemente pasa esta variable durante __construct () y hace que lo que hace el objeto durante la construcción dependa del valor de verdad de esa variable?

Utilice Setters y Getters o tal vez una configuración centralizada como:

function config()
{
  static $data;

  if(!isset($data))
  {
    $data = new stdClass();
  }

  return $data;
}

class myClass
{
    public function myFunction()
    {
        echo "config()->myConfigVar: " . config()->myConfigVar;
    }
}

y el uso:

config()->myConfigVar = "Hello world";

$myClass = new myClass();
$myClass->myFunction();

http://www.evanbot.com/article/universally -accessible-data-php / 24

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top