我有一个有几种方法的课
deleteUploadedFile()
和currentUploadedFiles()
。
currentUploadedFiles(),基本上遍历会话数组并在屏幕上显示,简单如。代码示例:
function currentUploadedFiles()
{
if(isset($_SESSION['fileArray']) && $this->count > 0)
{
echo '<p style="clear:both">Current files uploaded list:</p>';
echo '<ol>';
foreach($_SESSION['fileListing'] as $key => $value )
{
echo '<li>'. $value .' <a href="'.$_SERVER["PHP_SELF"].'?id='.$key.'">[Remove File]</a></li>';
}
echo "</ol>\n\r";
echo "<p> Current file size allowance: ". $this->_returnRemainingSessionFileSize() ." of 8 MB";
} else {
echo '<p style="clear:both">No files have been uploaded yet</p>';
}
if($this->deleteUploadedFile() === true)
{
echo '<p>File has now been deleted from our records.</p>';
}
}
deleteUploadedFile()方法,基本上在提交表单时,它会从服务器中删除文件并从会话数组中删除该条目。示例代码:
function deleteUploadedFile()
{
(int) $id = $_GET['id'];
(bool) $deleted = false;
if (file_exists($this->target_path.'/'.$_SESSION['fileArray'][$id]))
{
$_SESSION['fileSize'] -= $this->_checkSessionFileSize($id);
if (unlink($this->target_path.'/'.$_SESSION['fileArray'][$id]))
{
$deleted = true; //'<p>File has now been deleted from our records.</p>';
unset($_SESSION['fileArray'][$id]);
unset($_SESSION['fileListing'][$id]);
}
}
return $deleted;
}
我的控制器,基本上检查文件ID是否为#set,然后检查数组是否为#set,然后调用deleteUploadedFile()
方法,然后调用currentUploadedFiles()
方法。
问题是,为什么当我在deleteUploadedFile()
中var_dump $ deleted var时,我得到bool(true)但在currentUploadedFiles()
方法中我得到bool(false)。听起来我以某种方式弄乱了范围?
答案 0 :(得分:2)
看起来$ deleted是在删除功能的本地范围内。
以下内容应该有效。
class theClass
{
function __construct()
{
$this->deleted = false
}
function delete()
{
$this->deleted = true;
}
function upload()
{
var_dump($this->deleted);
}
}