我的项目根目录中有帮助程序文件夹(因此,在 app / 文件夹之外)。在我的 composer.json 中,我自动加载了它:
"autoload": {
"classmap": [
"app/Http/Controllers",
"app/Models",
"database",
"libraries",
"helpers" // <- Helpers autoloaded here
],
...
},
帮助程序的方法是静态的,它们在视图和控制器中正常工作。现在我试图在第二个(Helper_2.php)中使用一个助手(Helper_1.php),如下所示:
class Helper_2 {
protected static $value = Helper_1::getValue();
...
}
但是在声明$value
字段的行上,我收到错误:
语法错误,意外情况&#39;(&#39;,期待&#39;,&#39;或&#39 ;;&#39;
我不确定为什么会这样。语法显然是正确的。
更新 - Helper_1.php代码:
class Helper_1 {
public static function getValue() {
$result = '';
switch (Storage::getDefaultDriver()) {
case 'local':
$result= URL::to('/');
break;
case 's3':
$path = Storage::getDriver()->getAdapter()->getClient()->getObjectUrl(env('S3_BUCKET'), '');
break;
}
return $result.'/';
}
}
答案 0 :(得分:3)
PHP无法解析初始值设定项中的非平凡表达式。
你可以这样做:
class Helper_2 {
protected static $value;
}
Helper_2::$value = Helper_1::getValue();
或者这个:
class Helper_2 {
protected static $value;
static function init()
{
self::$value = Helper_1::getValue();
}
}
Helper_2::init();
答案 1 :(得分:3)
语法显然是正确的。
不是。您不能在类属性定义中使用方法调用,因此以下内容不正确:
protected static $value = Helper_1::getValue();
您只能使用简单的数据类型,如整数,字符串,数组等。