如何通过 Laravel IoC 容器访问 Orchestra Xml 解析器

How to access Orchestra Xml Parser through Laravel IoC Container

我正在使用 laravel 5.1。我想使用 XML 解析器,我已经搜索并找到了 Orchestra as mostly being used. So I have gone thorough all the steps given at documentation 来安装和配置。我在 config/app.phpproviders 部分添加了 Orchestra\Parser\XmlServiceProvider::class,在 aliases 部分添加了 'XmlParser' => Orchestra\Parser\Xml\Facade::class

现在在我的控制器中,我在控制器顶部添加了它的名称 space,如 use Orchestra\Parser\Xml\Facade;。但是当我尝试在我的动作中使用它的功能时,比如

$xml = XmlParser::load($xml_document);

它生成错误说明,

Class 'App\Http\Controllers\XmlParser' not found

所以我想知道 Laravel 5.1 中是否有任何其他方式来使用这些包,如果有人使用它,我在 Orchestra 中做错了一些事情。

在 Laravel 5.1 中,控制器位于命名空间中。 XmlParser 在另一个命名空间中。您需要在控制器中包含该命名空间。

<?php

namespace Orchestra\Parser\Xml; // Maybe this one is different

class Controller...

您也可以添加一个 \ 使其生效。

$xml = XmlParser::load($xml_document);

由于文档已经描述了外观别名的注册:

'XmlParser' => Orchestra\Parser\Xml\Facade::class,

您可以使用 \XmlParser::load(),或导入别名。

use XmlParser;

或导入完整的命名空间。

use Orchestra\Parser\Xml\Facade as XmlParser;

看起来它正在控制器内部搜索它..

Class 'App\Http\Controllers\XmlParser' 未找到

因此:

$xml = XmlParser::load($xml_document);

需要:

$xml = \XmlParser::load($xml_document);

应该可以解决这个问题