我正在阅读一些关于为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(); } );
返回错误:
使用未定义的常量图形 - 假设&#39;图形&#39;
我还在composer.json autload部分添加了"app/libraries/graphics/Image.php"
行,这不应该是必需的。为什么我收到此错误?每个教程都显示相同的程序,但为什么它不起作用?
答案 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();
});