> 백엔드 개발 > PHP 튜토리얼 > thinkphp用import引入的文件,没有办法读取

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

WBOY
풀어 주다: 2016-06-23 14:02:17
원래의
891명이 탐색했습니다.

我在一个函数内用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 约定的方式来做,他会自动加载

好的,谢谢提醒。

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿