Laravel - 自定义类不起作用

时间:2014-12-09 12:04:46

标签: php laravel classloader composer-php

我正在阅读一些关于为Laravel创建自定义类的教程。我按照说明操作,完成了教程所说的内容:

  1. 创建新文件夹laravel / app / libraries / graphics /

  2. 编辑了laravel / app / start / global.php,其中我添加了:

    app_path().'/libraries/graphics',
    
  3. 使用以下代码在laravel / app / libraries / graphics /中命名为Image.php创建新文件:

    <?php  namespace graphics/Image;
    
    class Image {
    
        public static function hello() {
    
        return 'Hello';
    
        }
    }
    
  4. 使用composer dump-autload命令

  5. Route::get('/' , function() { return Graphics\Image::hello(); } );返回错误:

  6.   

    使用未定义的常量图形 - 假设&#39;图形&#39;

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

3 个答案:

答案 0 :(得分:1)

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

<?php  namespace graphics;

class Image {

    public static function hello() {

    return 'Hello';

    }
}

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

你不需要为自己混淆。我将问题解决到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();
});