【发布时间】:2016-09-30 03:05:21
【问题描述】:
我正在编写一个辅助方法来读取 xml 数据并将其转换为 json。我按照以下步骤操作
1) 创建文件
app/helper/commonHelper.php
并添加以下代码。
<?php
function xmlToArray($xml, $options = array()) {
// the entire code here
}
2) 在
下创建了一个文件app/providers/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) inD:\work\HC\hcserver\app\Helpers\CommonHelper.php 在第 79 行 PHP 致命错误:未捕获的异常 'Illuminate\Contracts\Container\BindingResolutionException' 与 消息'目标 [Illuminate\Contracts\Debug\ExceptionHandler] 不是 可实例化的。在 D:\work\HC\hcserver\vendor\laravel\framework\src\Illuminate\Container\Container.php:748
请告诉我我在这里做错了什么?
更新:CommonHelper.php 中的全部内容 -> http://pastebin.com/GuQGYnJP
【问题讨论】:
-
不知道原因。但是你可以用
if(!function_exists('xmlToArray')) { function xmlToArray() {} }包装你的函数声明 -
请张贴整个文件
D:\work\HC\hcserver\app\Helpers\CommonHelper.php(如果太长请使用pastebin) -
奇怪,它似乎没有像错误提示的那样重复声明。我在 L5.2 实例上测试了完全相同的设置 - 它在这里工作......现在我很好奇
-
@CanVural 你的调整对我有用!
标签: php laravel-5.2