【问题标题】:Laravel integration with Intervention and namespaces?Laravel 与干预和命名空间的集成?
【发布时间】:2014-11-02 15:29:21
【问题描述】:

tl;dr - 我已经做过composer sump-autoload

问题: 我正在使用干预图像库。 我正在更新具有表示图像模型的 Image 类的现有应用程序。 我希望使用 Intervention Image Image 类的完整命名空间名称。

See example here:

我将我希望解决的故障范围缩小为具有单一路由的空测试项目:

Route::get('/{sugar}.jpg', function($sugar)
{
    $path = 'C:/some-path/';
    $img = Intervention\Image\Image::make($path . $sugar . '.jpg');
    return $img->response('jpg');
});

这是有问题的行:

$img = Intervention\Image\Image::make($path . $sugar . '.jpg');

结果:

Call to undefined method Intervention\Image\Image::make()

但是,命名空间似乎是正确的:

https://github.com/Intervention/image/blob/master/src/Intervention/Image/Image.php

如果我删除命名空间并执行以下操作:

$img = Image::make($path . $sugar . '.jpg');

完美运行!只是这会与实际应用中现有的 Image 类发生冲突。

感谢您阅读本文。有关如何调试此命名空间问题的任何建议?

【问题讨论】:

    标签: php class methods laravel namespaces


    【解决方案1】:

    似乎类名不正确! 似乎有一个名为 image 的类,但它不是我需要的。 正确的类名是ImageManagerStatic

    您可以这样做来处理名称冲突:

    use Intervention\Image\ImageManagerStatic as someUniqueName;
    

    您也可以简单地从这里更改config/app 中的行

            'Image'      => 'Intervention\Image\Facades\Image',
    

    到这里

            'someUniqueName'      => 'Intervention\Image\Facades\Image',
    

    【讨论】:

      【解决方案2】:

      use Intervention\Image\Facades\Image; 添加到控制器类的顶部。

      这有助于我访问图像控制器。

      它应该或可能是这样的:

      <?php namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      use Illuminate\Support\Facades\Validator;
      use Illuminate\Support\Facades\Session;
      use Illuminate\Support\Facades\Response;
      use Intervention\Image\Facades\Image;
      
      
      class AdminController extends Controller{
      

      【讨论】:

        猜你喜欢
        • 2023-03-21
        • 1970-01-01
        • 2023-03-16
        • 2014-11-12
        • 1970-01-01
        • 2015-07-05
        • 1970-01-01
        • 2013-01-25
        • 2010-10-14
        相关资源
        最近更新 更多