Usando require / require_once () en un archivo de funciones

mi archivo functions.php es solo un marcador de posición para muchas funciones diferentes. Tengo otro archivo settings.php que utilizo para almacenar diferentes configuraciones. Algunas de las funciones en functions.php necesitarán acceder a algunas de las variables en settings.php, así que intenté:

require("settings.php")

en la parte superior del archivo functions.php, pero eso no parece dar a mis funciones acceso a la variable en settings.php. Necesito poner require ("settings.php") en cada función por separado.

¿Hay alguna manera de declarar que las variables en settings.php sean accesibles globalmente a todas las funciones definidas en functions.php?

Gracias,

preguntado el 16 de mayo de 11 a las 18:05

lo que estás diciendo debería funcionar bien. ¿Puede publicar un ejemplo? ¿Entiendes el alcance variable? -

Quieres definir un solo $config[] matriz con todas las variables de configuración. De esta forma evitarás crear un alias uno tras otro con global. -

4 Respuestas

Necesita modificar sus funciones en functions.php utilizar variables globales definidas en settings.php.

Inside settings.php;

$var1 = "something";
$var2 = "something else";

Mediante el uso de la global palabra clave:

function funcName() {
  global $var1;
  global $var2;

 // Rest of the function...
}

O más preferiblemente, usando el $GLOBALS[] matriz superglobal. Cualquier variable declarada en el alcance global, como supongo que son sus settings.php vars, se incluirá como claves de matriz en $GLOBALS[]. Es un poco mejor para la legibilidad que usar el global palabra clave dentro de cada función.

function funcName() {
  $y = $GLOBALS['var1'];
  $x = $GLOBALS['var2'];
 // Etc...
}

contestado el 16 de mayo de 11 a las 23:05

Aunque ha establecido estas variables en su settings.php , cuando intente hacer referencia a ellos en sus funciones, no funcionará. Esto se debe a que las variables en funciones tienen un ámbito local para la función.

Para acceder a estas variables globales, debe utilizar el global palabra clave para traer tu global variables en el alcance.

Por ejemplo:

// Declared in settings.php
$x = 1234;


// One of your functions
function MyFunc()
{
  global $x;

  DoSomething($x);
}

Necesita hacer esto para cada función donde $x se accede.

Para más información, ver:

Alcance variable - php.net docs

contestado el 16 de mayo de 11 a las 23:05

No conozco los detalles de su problema, pero es posible que desee utilizar require_once() dentro de cada función. Esta parece ser una mejor idea que usar algunas variables globales.

contestado el 16 de mayo de 11 a las 23:05

Estás pensando en variables globales.

Sin embargo, esa no es la mejor manera de hacerlo.

¿Quizás puedas crear una clase?

class SomeClass
{
    private $settings;

    function __construct()
    {
        require_once($settings);
        $this->settings = $variable(s) from settings file
    }

    function some_function()
    {
        print($this->settings['something']);
    }
}

contestado el 16 de mayo de 11 a las 23:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.