【问题标题】:Call one function from another function in PHP class从 PHP 类中的另一个函数调用一个函数
【发布时间】:2013-08-10 13:27:09
【问题描述】:

我想扫描目录和子目录,制作 xml 文件列表,从 xml 文件中获取内容并显示它。此功能在没有 OOP 的情况下正常工作。我尝试创建一个类。我从函数main 调用函数scandir_through。我没有错误,结果也是。

class data {
    var $dir = 'D:\wamp4\www\begin';

    public function scandir_through($dir)
     {
         $items = glob($dir . '/*');
         for ($i = 0; $i < count($items); $i++) {
             if (is_dir($items[$i])) {
                 $add = glob($items[$i] . '/*');
                 $items = array_merge($items, $add);
             }
         }
        return $items;
     }

    public function main()
    {
        $scan_tree = $this->scandir_through($dir);
        echo "<ul id='booklist'>"."</n>";
        foreach ($scan_tree as $key=>$file){
            $url = $file;
            $xml = simplexml_load_file($url);  
               $book_count = count($xml->book); 
               for($i = 0; $i < $book_count; $i++) { 
                   $book = $xml->book[$i]; 
                   $title=$xml->book[$i]->title;
                   $author=$xml->book[$i]->author;
                   //echo '</br>';
                   //echo $file. " &nbsp   ";
                   //echo $title. " &nbsp   ";
                   //echo $author;
                   echo "<li><div class='file'>".$file."</div>
                   <div class='title'>".$title."</div>
                   <div class='author'>".$author."</div></li></n>";
               }     
         }  
          echo "</ul>";
    }
}
$d = new data();
$d->main();
?>

【问题讨论】:

  • 请记住 PHP 是一种多范式语言。您不必需要在任何地方都使用 OOP。
  • 不,我的赌注,不正确的副本。
  • 此任务需要 OOP。
  • 请提供$items的输出

标签: php class function oop


【解决方案1】:
$items=data::scandir_through($dir);

【讨论】:

    【解决方案2】:

    我认为 $dir 应该是 main 的参数。试想一下,如果你在课堂上什么都没有,main 会从哪里获得 $dir?

    我会改变:

    public function main()
    

    public function main($dir)
    

    当您使用 $d 调用 main 时,请包含该目录,以便将其更改为:

    $d->main($dir);
    

    【讨论】:

    【解决方案3】:

    问题是因为 $dir 实例变量不是您在 main 方法中访问的。 (它在该方法的范围内寻找$dir 变量,而不是在类级别。)

    你需要用到的是……

    $scan_tree = $this->scandir_through($this->dir);
    

    如果您打开 E_NOTICE 警告,您会看到它一直在抛出错误。

    【讨论】:

    • 我试过这个,但是我有一个空白页,没有结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多