Laravel - 自定义类不起作用

Posted

技术标签:

【中文标题】Laravel - 自定义类不起作用【英文标题】:Laravel - custom classes don't work 【发布时间】:2015-02-07 07:44:14 【问题描述】:

我正在阅读一些关于为 Laravel 创建自定义类的教程。我按照说明按照教程所说的做了:

    新建文件夹 laravel/app/libraries/graphics/

    在我添加的地方编辑 laravel/app/start/global.php

    app_path().'/libraries/graphics',
    

    使用以下代码在 laravel/app/libraries/graphics/ 中创建名为 Image.php 的新文件:

    <?php  namespace graphics/Image;
    
    class Image 
    
        public static function hello() 
    
        return 'Hello';
    
        
    
    

    使用composer dump-autload 命令

    Route::get('/' , function() return Graphics\Image::hello(); ); 正在返回错误:

使用未定义的常量图形 - 假定为“图形”

我还在 composer.json autload 部分添加了"app/libraries/graphics/Image.php"line,这不是必需的。为什么我收到此错误?每个教程都显示了相同的过程,但为什么它不起作用?

【问题讨论】:

对于命名空间,您使用反斜杠“\”而不是“/” 然后我得到错误“类图形\图像不存在” 因为你的命名空间,包括类是Graphics\Image\Image。如果你想要Graphics\Image,你需要将你的命名空间更改为Graphics 【参考方案1】:

你的命名空间不应该只是graphics吗?当前文件创建graphics\Image\Image。尝试从您的命名空间中删除 Image

<?php  namespace graphics;

class Image 

    public static function hello() 

    return 'Hello';

    

【讨论】:

如果我使用“命名空间图形\图像;”然后“返回 graphics\Image\Image::hello();”有用。但是如果我使用“命名空间图形;”和“返回图形\图像::你好();”然后它不起作用返回相同的错误。为什么?【参考方案2】:

您是否尝试过改用artisan dump-autoload

它将清除 Laravel 的所有编译代码。

请看这里:What are differences between "php artisan dump-autoload" and "composer dump-autoload"

【讨论】:

【参考方案3】:

您不必为自己感到困惑。我正在解决 Laravel 5 中的问题。您不需要将“app/libraries/graphics/Image.php”行添加到composer.json autload 部分,因为By default, app directory is namespaced under App and is autoloaded by Composer using the PSR-4 autoloading standard.

<?php 
namespace App\libraries\graphics;
class Image 
     public static function hello() 
         return 'Hello';
     

现在使用您路线中的图像类。

Route::get('graphics',function()
    echo \App\libraries\graphics\Image::hello();
);

【讨论】:

以上是关于Laravel - 自定义类不起作用的主要内容,如果未能解决你的问题,请参考以下文章

切换类不起作用

Laravel 调度程序自定义 Cron 表达式不起作用

为自定义私有类实现 Equatable - Swift

在虚拟主机中使用自定义端口的 Laravel 路由在 Apache 中不起作用

生成的自定义托管对象类不构建

UICollectionViewCell 中的 NSLayoutConstraint:尺寸类自定义不起作用