如何访问包中的laravel全局类

时间:2014-09-24 15:35:16

标签: laravel package

我正在开发一个Laravel包。在包中我需要File :: delete删除文件,但会显示以下错误消息:

  

未找到类'Chee \ Image \ File'

你能帮助我吗?

3 个答案:

答案 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