0

在这里需要一点帮助。正在阅读在函数中添加全局变量并在外部调用它是多么糟糕,但是在外部获取变量时遇到了小问题。全球帮助,但我也想安全,因为我在这里处理一些文件

我的循环是这个

<?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 / 的一部分大约有 150 行,但这是主要片段

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 我还有一些其他的东西,比如 date 、 counter 等,但它们都受某些条件的约束。

我试着做

返回$链接;在函数结束时使用全局但出现未定义变量错误;

这里的基本问题是,如何在不使用全局的情况下获取函数外部的 download_link var?

4

3 回答 3

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>';
}
于 2012-05-01T21:58:01.810 回答
0

既然你只是get_file_info用来 set $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>';
} 
?>
于 2012-05-01T21:58:25.410 回答
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';
  }
 }
于 2012-05-01T22:07:28.693 回答