Heim >Backend-Entwicklung >PHP-Tutorial >thinkphp用import引入的文件,没有办法读取

thinkphp用import引入的文件,没有办法读取

WBOY
WBOYOriginal
2016-06-23 14:02:17879Durchsuche

我在一个函数内用import("Common.logAction",APP_PATH,'.php');引入logAction.php文件,这个文件是一个多维数组,结构如下:
$_LANG['log_action']['add'] = '添加';
$_LANG['log_action']['remove'] = '删除';
$_LANG['log_action']['edit'] = '编辑';
$_LANG['log_action']['import'] = '导入';
$_LANG['log_action']['sheng'] = '生成';
$_LANG['log_action']['print'] = '打印';
$_LANG['log_action']['general_ruku'] = '常规入库';
$_LANG['log_action']['sell_chuku'] = '销售出库';
$_LANG['log_action']['check'] = '审核';
$_LANG['log_action']['uncheck'] = '取消审核';
$_LANG['log_action']['batch_check'] = '批量审核';

但是我在函数中却怎么也读取不到引入那个文件的变量值。
function admin_log($sn = '', $action, $content)
{
//日志操作,动作
import("Common.logAction",APP_PATH,'.php');
echo $GLOBALS['_LANG']['log_action'][$action];exit;
   

}

麻烦各位给点建议。。。


回复讨论(解决方案)

浏览了一下 thinkphp 的代码
import 是函数,其中调用 require_cache 加载文件
而文件是在 require_cache 中加载的:require $filename;
因此除了类定义以外,其他的数据声明都成为了函数 require_cache 中的私有变量
除非你在被加载的文件声明其为全局变量

你似乎是在做多语言支持
那么为什么不使用ThinkPHP内置多语言支持呢?

我不是使用多语言支持,我只是在做一个记录操作日志的功能,上面提到要引入的那个文件,就是一些操作的动作。

而且引入的那个文件不是类,是一个PHP文件,存放数组的。

你直接 include 就是了
不过还是遵守人家的规则比较好
你这个文件应该算是配置文件吧?

对的,就是配置文件来的,我刚刚在被引入的那个文件中定义global  $_LANG;就可以了。
不过我想问一下,如果全局变量定义太多会有影响吗?

之前没有用TP框架时,就是用include引入的,不用声明全局变量

对的,就是配置文件来的,我刚刚在被引入的那个文件中定义global  $_LANG;就可以了。
不过我想问一下,如果全局变量定义太多会有影响吗? 全局变量定义太多会有影响吗?
没有,只是需要自己注意不要冲突了

配置文件应该用 TP 约定的方式来做,他会自动加载

引用 7 楼 babyface201008 的回复:对的,就是配置文件来的,我刚刚在被引入的那个文件中定义global  $_LANG;就可以了。
不过我想问一下,如果全局变量定义太多会有影响吗?全局变量定义太多会有影响吗?
没有,只是需要自己注意不要冲突了

配置文件应该用 TP 约定的方式来做,他会自动加载

好的,谢谢提醒。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn