Php 如何使用控制器的私有属性作为静态属性?
所以,这个问题很好地解释了我想要什么。这是我所做工作的最低代码Php 如何使用控制器的私有属性作为静态属性?,php,laravel,oop,laravel-5,authorize.net,Php,Laravel,Oop,Laravel 5,Authorize.net,所以,这个问题很好地解释了我想要什么。这是我所做工作的最低代码 class AuthorizeController extends Controller { private $aNetEnvironment; /** * Create a new controller instance. * * @return void */ public function __construct() { $this-&g
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
还有其他选择吗?您可以使用PHP。从文档: 签名:
constant ( string $name ) : mixed
返回由名称指示的常量值。
constant()
在需要检索
常量,但不知道其名称。即,它存储在变量或
由函数返回
此函数也适用于类常量
因此,在你的情况下:
$response = $controller->executeWithApiResponse(
constant('\net\authorize\api\constants\ANetEnvironment::' . $this->aNetEnvironment)
);
要以这种方式使用类属性,您需要从一个
$
开始,并将属性包装在{}
中,例如${$this->property}
,因此您应该能够在控制器中使用以下内容:
\net\authorize\api\constants\ANetEnvironment::${$this->aNetEnvironment}
env('ANetEnvironment')的内容是什么
?@HCK尝试了“SANDBOX”。允许访问未声明的静态属性:net\authorize\api\constants\ANetEnvironment::$SANDBOX
@shazyriver啊抱歉,我假设您尝试访问的是静态属性,而不是常量,因为问题的标题是static property。不过,很高兴您找到了答案。