Php 拉威尔未定义函数

Php 拉威尔未定义函数,php,arrays,function,laravel,undefined,Php,Arrays,Function,Laravel,Undefined,我有以下功能: # Get Directories of Path as Array function dirToArray($dir) { $result = array(); $cdir = scandir($dir); foreach ($cdir as $key => $value) { if (!in_array($value,array(".",".."))) { if (is_dir($dir . DIRE

我有以下功能:

# Get Directories of Path as Array
function dirToArray($dir) {

   $result = array();

   $cdir = scandir($dir);
   foreach ($cdir as $key => $value)
   {
      if (!in_array($value,array(".","..")))
      {
         if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
         {
            $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
         }
         else
         {
            $result[] = $value;
         }
      }
   }

   return $result;
}
这样称呼它:

        $watchFolder = 'C:\\xampp\\htdocs\\project\\One\\';
        $this->dirToArray($watchFolder);
<?php

namespace App\Http\Controllers;

use DB;
use Mail;
use File;
use Input;
use Request;
use Illuminate\Filesystem\Filesystem;
use App\Http\Controllers\Controller;

class ProductRController extends Controller
{

    public function createProduct()
    {
            ...
            $watchFolder = 'C:\\xampp\\htdocs\\Product\\R\\';
            $this->dirToArray($watchFolder);

            return redirect()->route('root')->with('message', 'Success')->withInput();
        }
        else
        {
            return redirect()->route('newProduct')->with('message', 'Error')->withInput();
        }

    }

    # Get Directories of Path as Array
    function dirToArray($dir) {

       $result = array();

       $cdir = scandir($dir);
       foreach ($cdir as $key => $value)
       {
          if (!in_array($value,array(".","..")))
          {
             if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
             {
                $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
             }
             else
             {
                $result[] = $value;
             }
          }
       }

       return $result;
    }

}
但我得到以下错误:

调用未定义的函数App\Http\Controllers\dirToArray()

有人知道如何解决这个问题吗

编辑: 因此,我的完整控制器如下所示:

        $watchFolder = 'C:\\xampp\\htdocs\\project\\One\\';
        $this->dirToArray($watchFolder);
<?php

namespace App\Http\Controllers;

use DB;
use Mail;
use File;
use Input;
use Request;
use Illuminate\Filesystem\Filesystem;
use App\Http\Controllers\Controller;

class ProductRController extends Controller
{

    public function createProduct()
    {
            ...
            $watchFolder = 'C:\\xampp\\htdocs\\Product\\R\\';
            $this->dirToArray($watchFolder);

            return redirect()->route('root')->with('message', 'Success')->withInput();
        }
        else
        {
            return redirect()->route('newProduct')->with('message', 'Error')->withInput();
        }

    }

    # Get Directories of Path as Array
    function dirToArray($dir) {

       $result = array();

       $cdir = scandir($dir);
       foreach ($cdir as $key => $value)
       {
          if (!in_array($value,array(".","..")))
          {
             if (is_dir($dir . DIRECTORY_SEPARATOR . $value))
             {
                $result[$value] = dirToArray($dir . DIRECTORY_SEPARATOR . $value);
             }
             else
             {
                $result[] = $value;
             }
          }
       }

       return $result;
    }

}

您仍然需要在函数内部使用
$this->
,就像在函数外部使用一样,因为
$this
表示调用方法的对象:

$result[$value] = $this->dirToArray($dir . DIRECTORY_SEPARATOR . $value);

您仍然需要在函数内部使用
$this->
,就像在函数外部使用一样,因为
$this
表示要调用方法的对象:

$result[$value] = $this->dirToArray($dir . DIRECTORY_SEPARATOR . $value);


你把你的函数放在哪里了?我把它放在一个控制器里了。那么你把它叫做什么呢?在这里,工作/非工作级别也不重要,但是将方法显式声明为
public
是最佳实践(和PHP标准),您可以用相应的文件名更新您的问题吗?尝试使用
$result[$value]=$this->dirToArray($dir.DIRECTORY\u SEPARATOR.$value)public
是最佳实践(和PHP标准),您可以用相应的文件名更新您的问题吗?尝试使用
$result[$value]=$this->dirToArray($dir.DIRECTORY\u SEPARATOR.$value)谢谢,抱歉没有查找时间或名称代码不鼓励只回答。如果这将被选为“最佳答案”,请使用有关问题发生原因以及如何解决问题的信息进行更新。如果这个答案被更新,我可以删除我的答案。@patricus,我已经在你面前发布了带有答案的评论(相差2分钟)。然后我将我的asnwer从评论复制粘贴到了答案。看看我评论的时间戳。你是想说“评论不算数”还是什么?@AlexeyMezenin我看到了这个问题并写下了答案。这样做时,我不会不断刷新评论。我不在乎“打勾”,但我在乎的是勾号是否反映了“最佳答案”。到目前为止,这不是最好的答案,因为它不能解释任何事情。这个网站应该不仅仅是一个额外的调试器。请更新此答案以解释问题及其原因,以便我可以删除我的答案。@patricus,我认为答案是显而易见的,我知道如何使用
$this
(看看他的代码,他在函数外部使用
$this
),他会忘记在函数内部再次使用它。这很奇怪,但好吧,我已经更新了我的帖子,所以你可以很高兴。谢谢,对不起,没有寻找时间也没有名称代码,只有答案是不鼓励的。如果这将被选为“最佳答案”,请使用有关问题发生原因以及如何解决问题的信息进行更新。如果这个答案被更新,我可以删除我的答案。@patricus,我已经在你面前发布了带有答案的评论(相差2分钟)。然后我将我的asnwer从评论复制粘贴到了答案。看看我评论的时间戳。你是想说“评论不算数”还是什么?@AlexeyMezenin我看到了这个问题并写下了答案。这样做时,我不会不断刷新评论。我不在乎“打勾”,但我在乎的是勾号是否反映了“最佳答案”。到目前为止,这不是最好的答案,因为它不能解释任何事情。这个网站应该不仅仅是一个额外的调试器。请更新此答案以解释问题及其原因,以便我可以删除我的答案。@patricus,我认为答案是显而易见的,我知道如何使用
$this
(看看他的代码,他在函数外部使用
$this
),他会忘记在函数内部再次使用它。这很奇怪,但好吧,我已经更新了我的帖子,所以你可以开心。