如何使用类名变量访问PHP中的命名空间类常量?

时间:2016-07-22 23:47:16

标签: php variables reflection namespaces

我有以下内容。

my class
<?php
namespace app\models;    
use BingAds\CustomerManagement\CustomerManagementServiceSettings;

api class
namespace BingAds\CustomerManagement
{
    final class CustomerManagementServiceSettings
    {
        const SandboxEndpoint = 'https://clientcenter.api.sandbox.bingads.microsoft.com/Api/CustomerManagement/v9/CustomerManagementService.svc';

如何使用类名的变量访问常量?它可以直接实例化类,但是当它是一个变量时,我无法访问或实例化该类。

new CustomerManagementServiceSettings();
$serviceSettingsClass = 'CustomerManagementServiceSettings';
$serviceSettingsClass::SandboxEndpoint; # line 80

给予

  

PHP致命错误:Class&#39; CustomerManagementServiceSettings&#39;在第80行的/cygdrive/c/Users/Chloe/workspace/bestsales/models/BingAds.php中找不到

question没有帮助。

在Java中我可以使用

Class c = CustomerManagementServiceSettings.class
String se = (String) c.getField("SandboxEndpoint").get(null);

1 个答案:

答案 0 :(得分:1)

观察akhoondi at php.net指出的内容:

  

必须注意的是,当使用动态类名[...]时,&#34;当前命名空间&#34; [...]是全局命名空间。

因此,为了完成这项工作,您需要在使用动态类名时指定完整的命名空间。