在类方法上返回布尔值

时间:2011-06-03 01:45:36

标签: php

我有一个有几种方法的课

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)。听起来我以某种方式弄乱了范围?

1 个答案:

答案 0 :(得分:2)

看起来$ deleted是在删除功能的本地范围内。

以下内容应该有效。

class theClass
{
    function __construct()
    {
        $this->deleted = false
    }

    function delete()
    {
        $this->deleted = true;
    }

    function upload()
    {
        var_dump($this->deleted);
    }

}