Laravel 如何从boot方法调用Facades方法?

Laravel 如何从boot方法调用Facades方法?,laravel,laravel-facade,Laravel,Laravel Facade,在laravel 6应用程序中,我创建了facade应用程序/Facades/MyFuncsClass.php: <?php namespace App\Facades; use Illuminate\Support\Facades\Facade; class MyFuncsClass extends Facade{ protected static function getFacadeAccessor() { return 'MyFuncsClass'; } } 静态地“

在laravel 6应用程序中,我创建了facade应用程序/Facades/MyFuncsClass.php:

<?php

namespace App\Facades;

use Illuminate\Support\Facades\Facade;

class MyFuncsClass extends Facade{
    protected static function getFacadeAccessor() { return 'MyFuncsClass'; }
}
静态地“

从启动方法调用它:

protected static function boot() {
    parent::boot();

    static::deleting(function($task) {
        $hostel_image_image_path= Task::getTaskImagePath($task->id, $task->image);
        MyFuncsClass::debToFile(print_r($hostel_image_image_path, true), '-9 $hostel_image_image_path::');
        ...
是否有办法避免此错误并在引导方法中运行MyFuncsClass::debToFile

已修改: 确实,我在config/app.php“providers”块中注册了facade:

...
App\Providers\MyFuncsClassProvider::class,
文件app/Http/Helpers/MyFuncsClass.php有许多公共方法,标题为:

<?php

namespace App\Helpers;

use Illuminate\Http\Request;
use Barryvdh\Debugbar\Facade as Debugbar;
use Carbon\Carbon;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;

class MyFuncsClass {

    public $concat_str_max_length = 50;
    public $m_concat_str_add_chars = '...';

    public function debToFile($contents, string $descr_text = '', bool $is_sql = false, string $file_name = '')
    {
        try {
        ...
我尝试了一种将助手类重命名为“MyFuncsClassContainer”的方法,假设 帮助程序和外观具有相同的名称可能会引发错误,但失败

是否有办法修复此错误


谢谢!

你已经在app.php配置文件中注册了facade吗?你正在向服务提供商注册该类吗?另外,你可以在你的问题中添加
app\Helpers\MyFuncsClass
类的代码。请看修改过的blockHello,有没有从静态启动方法调用facade方法的想法?facade看起来很好但我遇到了这个问题。我以前使用过traits,但后来改用facade,因为我认为它们是普通应用程序方法的现代laravel决策……请看修改的#2块
<?php

namespace App\Helpers;

use Illuminate\Http\Request;
use Barryvdh\Debugbar\Facade as Debugbar;
use Carbon\Carbon;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;

class MyFuncsClass {

    public $concat_str_max_length = 50;
    public $m_concat_str_add_chars = '...';

    public function debToFile($contents, string $descr_text = '', bool $is_sql = false, string $file_name = '')
    {
        try {
        ...
<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App;

class MyFuncsClassProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        App::bind('MyFuncsClass', function()
        {
            return new \App\Helpers\MyFuncsClass;

        });
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}
<?php

namespace App;

use DB;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Storage;

use App\Facades\MyFuncsClass;
use App\Http\Helpers\MyFuncsClassContainer; // Alias for my helper class
use Illuminate\Database\Eloquent\Model;
use Barryvdh\Debugbar\Facade as Debugbar;

class Task extends Model
{
    use Sluggable;

    protected $table = 'tasks';
    protected $primaryKey = 'id';
    }

    protected static function boot() {
        parent::boot();

        static::deleting(function($task) {
            $hostel_image_image_path= Task::getTaskImagePath($task->id, $task->image);


            \Log::info( '-9 $hostel_image_image_path::' );
            \Log::info( print_r($hostel_image_image_path, true) );
            $myFuncsClassCore = factory(MyFuncsClassContainer::class)->create();
            $myFuncsClassCore->debToFile(' debToFile string REDSA');
 Cannot declare class App\Helpers\MyFuncsClassContainer, because the name is already in use {"userId":1,"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalErrorException