我正在开发一个Laravel包。在包中我需要File :: delete删除文件,但会显示以下错误消息:
未找到类'Chee \ Image \ File'
你能帮助我吗?
答案 0 :(得分:1)
你必须在课堂顶部声明它:
namespace Chee\Image;
use File;
class Whatever()
{
}
您也可以直接从Laravel IoC容器中获取文件外观,而不是使用文件外观:
$app = app();
$app['files']->delete($path)
在服务提供者中,您可以将其作为包类的依赖项注入:
class Provider extends ServiceProvider {
public function register()
{
$this->app['myclass'] = $this->app->share(function($app)
{
return new MyClass($app['files']);
});
}
}
在课堂上收到它:
class MyClass {
private $fileSystem;
public function __construcy($fileSystem)
{
$this->fileSystem = $fileSystem;
}
public function doWhatever($file)
{
$this->fileSystem->delete($file)
}
}
答案 1 :(得分:1)
你应该可以使用:
\File
命名空间与您为要编写的类声明的命名空间相关。在对类的调用前添加“\”表示我们希望在根名称空间中查找此类,该名称空间只是“\”。可以通过这种方式访问Laravel File类,因为它是在根命名空间中声明的别名。
答案 2 :(得分:0)
假设您有类似的文件:
<?php
namespace Chee\Image;
class YourClass
{
public function method() {
File::delete('path');
}
}
你应该添加use
指令:
<?php
namespace Chee\Image;
use Illuminate\Support\Facades\File;
class YourClass
{
public function method() {
File::delete('path');
}
}
否则,如果您不使用PHP,则会在当前命名空间中查找File
类,以便查找Chee\Image\File
。如果需要,可以查看How to use objects from other namespaces and how to import namespaces in PHP