所以,这个问题几乎可以解释我想要什么。这是我正在做的最少代码。
class AuthorizeController extends Controller
{
private $aNetEnvironment;
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->aNetEnvironment = env('ANetEnvironment');
}
public function setEnvironment()
{
$controller = new AnetController\GetCustomerProfileController($request);
// $this->aNetEnvironment = SANDBOX
$response = $controller->executeWithApiResponse(
\net\authorize\api\constants\ANetEnvironment::$this->aNetEnvironment
);
}
}
搜索stackoverflow我有两个选择,都没有运气尝试过。
尝试,{$this->aNetEnvironment}
给予
语法错误,意外的')',预期为'('
尝试,$$this->aNetEnvironment
给予
App \ Http \ Controllers \ AuthorizeController类的对象不能为 转换为字符串
编辑:
尝试,${$this->aNetEnvironment}
给予
访问未声明的静态属性: net \ authorize \ api \ constants \ ANetEnvironment :: $ SANDBOX
还有其他选择吗?
答案 0 :(得分:2)
您可以使用PHP的constant()
helper。从文档中:
签名:
constant ( string $name ) : mixed
返回由名称表示的常数的值。
constant()
在需要检索a的值时很有用 常量,但不知道其名称。即它存储在变量或 由函数返回。此函数也可用于类常量。
所以在您的情况下:
$response = $controller->executeWithApiResponse(
constant('\net\authorize\api\constants\ANetEnvironment::' . $this->aNetEnvironment)
);
答案 1 :(得分:0)
要以这种方式将类属性用作variable variables,您需要从$
开始并将该属性包装在{}
中,例如${$this->property}
,因此您应该可以在控制器中使用以下内容:
\net\authorize\api\constants\ANetEnvironment::${$this->aNetEnvironment}