Laravel5.1 在配置文件中使用辅助函数报错

config/wallpaper.php

return [
    'savePath' =>  '/storage/wallpaper/', //. date('Y') . DIRECTORY_SEPARATOR . date('W').date('_Ymd').DIRECTORY_SEPARATOR),
    'watermarkPath' => resource_path('assets/watermark/' . date('Y') . DIRECTORY_SEPARATOR . date('W').DIRECTORY_SEPARATOR),
    'acceptType' =>  ['png', 'jpg', 'jpeg'],
    'widthHeight' => [1920=>1080,1600=>900,1440=>900,1366=>768,1024=>768],
    'redisPrefix' => 'oss_wallpapaer_upload',
];

Error

➜  todo5 php artisan serve
PHP Fatal error:  Uncaught ReflectionException: Class log does not exist in /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php:741
Stack trace:
#0 /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php(741): ReflectionClass->__construct('log')
#1 /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php(631): Illuminate\Container\Container->build('log', Array)
#2 /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(674): Illuminate\Container\Container->make('log', Array)
#3 /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php(842): Illuminate\Foundation\Application->make('log')
#4 /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php(805): Illuminate\Container\Container->resolveClass(Obje in /home/huangyanxiong/language/php/laravel/todo5/vendor/laravel/framework/src/Illuminate/Container/Container.php on line 741

这个程序原来是在laravel 5.3下写的,现在迁移到5.1下,发现在配置文件中使用辅助函数就是提示Class log does not exist 这是怎么回事

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 2

由于其他都是php自带的东西,那么只有resource_path可能有问题了。
恩,这是个帮助函数,我在5.3可以用。
现在代码来到了5.1,忽然报错了,我想一下。
是不是这个函数有什么问题呢?
5.1和5.3差了两个版本,那么哪里出了问题呢?
版本不一样,是不是可能你有的东西我没有?我有的你可能没有呢?
对了,是不是5.1没有resource_path,恩,可能。
于是去文档搜索了一下,5.2和5.3都有resource_path,但是5.1没有找到,所以发生了什么问题呢?


急急急吧,
从5.3把函数实现拷贝过来加到自己的辅助函数怎么样的?恩,有可能,看看怎么实现的?

if (! function_exists('resource_path')) {
    /**
     * Get the path to the resources folder.
     *
     * @param  string  $path
     * @return string
     */
    function resource_path($path = '')
    {
        return app()->resourcePath().($path ? DIRECTORY_SEPARATOR.$path : $path);
    }
}

没有测试,app()->resourcePath()不保证resourcePath方法在5.1存在

8年前 评论

@bluegeek 谢谢,已经换另一种方式实现

8年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!