【发布时间】:2021-09-09 12:29:01
【问题描述】:
我正在将我的旧 PHP 项目转换为基于 Laravel 的项目。 在我的旧项目中,我在每个页面中加载的配置文件中定义了常量。我会在这样的文件中定义常量。
define('USER_IMAGES_DIR', IMAGES_DIR."user_images/");
define("POST_IMAGES_DIR", IMAGES_DIR."post_images/");
define("FONTS_DIR", ASSET_DIR."fonts/");
每当我需要在函数中使用常量时,我都会直接这样做。
function make_avatar($character,$storepath=USER_IMAGES_DIR,$extension='png')
{
$image_name=time() . '.'.$extension;
$path = $storepath. $image_name;
$image = imagecreate(200, 200);
$red = rand(0, 255);
$green = rand(0, 255);
$blue = rand(0, 255);
imagecolorallocate($image, $red, $green, $blue);
$textcolor = imagecolorallocate($image, 255,255,255);
imagettftext($image, 100, 0, 55, 150, $textcolor,FONTS_DIR.'arial.ttf', $character);
imagepng($image, $path);
imagedestroy($image);
return $image_name;
}
现在,在 laravel 中,常量存储在 config 文件夹中,可以通过全局帮助程序(如 config('app_images_dir'))访问。我尝试像这样在函数的默认值中直接使用全局帮助器。
function make_avatar($character,$storepath=config('app.user_images_dir'),$extension='png')
{
$image_name=time() . '.'.$extension;
$path = $storepath. $image_name;
$image = imagecreate(200, 200);
$red = rand(0, 255);
$green = rand(0, 255);
$blue = rand(0, 255);
imagecolorallocate($image, $red, $green, $blue);
$textcolor = imagecolorallocate($image, 255,255,255);
imagettftext($image, 100, 0, 55, 150, $textcolor,FONTS_DIR.'arial.ttf', $character);
imagepng($image, $path);
imagedestroy($image);
return $image_name;
}
但是,现在当我尝试将常量用作函数的默认值时,它无法使用并显示错误。
我收到错误消息,上面写着Constant expression contains invalid operations
那么,我的问题是如何像在传统项目中一样使用这些常量?
【问题讨论】:
标签: php laravel constants laravel-8