PHP / Laravel 5.1 - 无法重新声明先前在文件中声明的方法

时间:2016-08-31 08:46:52

标签: php laravel-5.2

我正在编写一个帮助方法来读取xml数据并将其转换为json。我按照以下步骤进行了操作

1)创建文件

  

应用程序/助手/ commonHelper.php

并在其中添加了以下代码。

<?php

function xmlToArray($xml, $options = array()) {
// the entire code here

}

2)在

下创建了一个文件
  

应用程序/提供商/ HelperCommonsProvider.php

以及以下代码

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class HelperCommonsProvider extends ServiceProvider
{
    /**
     * Bootstrap the application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }

/**
 * Register the application services.
 *
 * @return void
 */
public function register()
{
   require base_path().'/app/Helpers/CommonHelper.php';
}

}

现在我在控制器中调用xmlToArray(),如

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use Tymon\JWTAuth\Facades\JWTAuth;
use Illuminate\Support\Facades\Config;
use Log as EventLogger;
class UsersController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */

    public function index() {
        echo "You are in the index function";

            $file = Config::get('constants.constants.userdirectory');
            $file  = $file . '/' . 71 . '/' . 71 . '.xml' ;



            $xmlloaded = simplexml_load_file($file);


            $returnvalues =  xmlToArray($xmlloaded, array('alwaysArray'));
            echo json_encode($returnvalues);
            die;

        //
    }
}

这会引发异常

Fatal error:  Cannot redeclare xmlToArray() (previously declared in D:\work\HC\hcserver\app\Helpers\CommonHelper.php:3) in
     第79行的

D:\ work \ HC \ hcserver \ app \ Helpers \ CommonHelper.php       PHP致命错误:未捕获异常'Illuminate \ Contracts \ Container \ BindingResolutionException'   消息'目标[Illuminate \ Contracts \ Debug \ ExceptionHandler]不是   实例化“。在   d:\工作\ HC \ hcserver \厂商\ laravel \框架\ SRC \照亮\容器\ Container.php:748

请告诉我,我在这里做错了什么?

更新:CommonHelper.php中的整个内容 - &gt; http://pastebin.com/GuQGYnJP

1 个答案:

答案 0 :(得分:0)

您应该从

更改名称
  

xmlToArray    至   xmlToArrayCustom

原因:它的全局功能对laravel和php有意义。 因为此方法名称由PHP库使用,不能使用相同的名称进行redaclared。