我刚刚开始使用PHP编写代码,让我感到困惑的是全局变量 - 我似乎无法访问全局变量/常量,除非我将它们带到了特定的范围内-need-of-data-function和修改全局变量似乎根本不起作用。的 WHY吗
我知道全局变量的一般缺点,但在我的用例中(存储一些地址和数组字面上对于整个脚本在任何给定时间工作至关重要),读取数据似乎很有趣从文件或数据库,它只是不会保存任何资源或帮助避免错误,我猜它实际上会使它更长,更耗资源,使56次调用读取包含的文件2个字符串而不是在RAM中查找它。如果发生任何变化,在每个函数中对它们进行硬编码似乎是一个噩梦。 我应该怎样做才能访问/修改全局数据并在不同的函数之间共享,比如在C或JS中?或者我应该使用更好的方式来重建这个该死的东西(功能那样)根据给定的参数提供数据会更多的RAM和CPU消耗来调用,不会吗?)
我在处理问题时正在开发的脚本如下所示:
<?php
static $client_id = "?&client_id=numbersAndStuff&callback=";
static $source = "https://api.twitch.tv/kraken/streams/";
static $source2 = "https://api.twitch.tv/kraken/users/";
static $direc = "/home/tybin/public_html/assets/data/twitch/";
$nicks = array();
$activityData;
$imageData;
function getNicknames()
{
global $direc,$nicks;
$loc_direc = $direc;
$fn = $loc_direc . "nicks.txt"; //works fine, not sure if
//its being done properly though
$fileHandle = fopen($fn,r) or die ("Unable to load nicks.txt!");
foreach(fgets($fileHandle) as $nick)
{
$loc_nicks = $nick;
$nicks[] = $loc_nicks;
}
var_dump($nicks);
}
//...20 other functions making use of data stored in nicks[] that I try to properly
//initalise and directories to work in/get data from.
答案 0 :(得分:0)
只有明确地执行PHP文件才会执行,否则它们会被完全忽略(例如,与C不同)。所以你应该将全局内容放入为此目的保留的文件中,然后使用require_once之类的东西()您需要的地方..将全局访问包装到函数中也是有意义的,这样您就可以在需要时更轻松地更改实现。
<?php
require_once('globals.php');
$nicks = getNicknames();
var_dump($nicks);
然后在其他地方:
static
如果将数据包装在这样的函数中,您也可以使用WindowManager
,避免污染全局命名空间。