这里需要一些帮助。正在阅读在功能中添加全局变量并在外面调用它有多糟糕,但是在将变量放到外面时遇到小问题。全球帮助但我也想要安全,因为我在这里处理一些文件
我的循环就是这个
<?php
require_once('functions.php');
?>
<?php
foreach( $files as $key=> $file ){
global $download_link;
get_file_info($key,$file);
?>
<span><a href="<?php echo $download_link ?>"><?php echo $file->name ?></a></span>
<?php } ?>
我的function.php /的PART 大约有150行,但这是主要的snipp
function get_file_info($key,$file){
global $download_link;
$access = explode(",",$file->access);
$permission = in_array(1,$access);
if($permission){
$download_link = 'ok to download';
}else{
$download_link = 'canot download';
}
}
在链接var旁边我还有其他几个像日期,计数器等,但它们都受到某些条件的约束。
我试着做
返回$ link;在函数的最后使用全局但得到未定义的变量错误;
这里的基本问题是,如何在不使用全局的情况下将download_link var置于函数外部?
答案 0 :(得分:0)
通过修改File类
,您可以更轻松地完成此操作
class File {
# ...
function get_url() {
return in_array(1, explode(',', $this->access))
? $this->url # return the file's url
: "/path/to/subscribe" # return a default path for non-access
;
}
}
您的HTML将按如下方式使用
<?php
foreach ($files as $file) {
echo '<a href="'.$file->get_url().'">Download this '.$file->name.'</a>';
}
答案 1 :(得分:0)
由于您只是使用get_file_info
来设置$download_link
,为什么不返回$permission
并在函数外定义$download_link
?
<?php
function get_file_info($key,$file){
$access = explode(",",$file->access);
$permission = in_array(1,$access);
return $permission;
}
foreach( $files as $key=> $file ){
$download_link = 'canot download';
if(get_file_info($key,$file)) {
download_link = 'ok to download';
}
echo '<span><a href="$download_link ">'. $file->name . '</a></span>';
}
?>
答案 2 :(得分:0)
您可以像这样更改循环:
<?php
require_once('functions.php');
?>
<?php
foreach( $files as $key=> $file ){
$download_link = get_file_info($key,$file);
?>
<span><a href="<?php echo $download_link ?>"><?php echo $file->name ?></a></span>
<?php } ?>
你的功能代码:
function get_file_info($key,$file){
$access = explode(",",$file->access);
$permission = in_array(1,$access);
if($permission){
return 'ok to download';
}
else {
return 'canot download';
}
}