방법

2017-01-09 7 views
0
$version = \jamesiarmes\PhpEws\Client::$ews_version; 

$ews_version가의 가능한 값과 클라이언트가 제공 변수방법

Uncaught Error: Access to undeclared static property:

예외 영역 해결 연산자에 일반 변수를 제공하기 위해 :

$ews_version = 'VERSION_2007'; 
$ews_version = 'VERSION_2007_SP1'; 
$ews_version = 'VERSION_2009'; 
$ews_version = 'VERSION_2010'; 
$ews_version = 'VERSION_2010_SP1'; 
$ews_version = 'VERSION_2010_SP2'; 
$ews_version = 'VERSION_2013'; 
$ews_version = 'VERSION_2013_SP1'; 
$ews_version = 'VERSION_2016'; 

수동 CONST 제공이 잘 작동 :

$version = \jamesiarmes\PhpEws\Client::VERSION_2013_SP1; 

도와주세요. 감사.

코드 :

$ews_version = $_REQUEST['version']; // User posted version (i.e. VERSION_2009) 

// Set connection information. 
$host = $ews_host; 
$username = $ews_username; 
$password = $ews_password; 
$version = \jamesiarmes\PhpEws\Client::$ews_version; 

$client = new \jamesiarmes\PhpEws\Client($host, $username, $password, $version); 
+0

:

이 사용하는 반사를 해결할 수 그 변수가 공개적이고 정적으로 정의 된 것을 볼 수 있습니까? 오류가 말한 것처럼 거기에 있지 않습니다. – Rafael

+0

정적 또는 공용으로 정의해야하는 이유는 무엇입니까? 어떤 클래스 나 함수가 아닌 일반 변수입니다. 내 편집을 참조하십시오 –

+0

클라이언트 클래스는'protected '인'$ version' 변수를 정의합니다. 즉,이 경우에는 액세스 할 수 없습니다. 또한 인스턴스 변수이기 때문에 정적으로 정의되지 않으므로 사용자가 시도하는 방식으로 액세스 할 수 없습니다. 클라이언트의 버전을 가져 오려면이 클래스를 수정하여이 변수를 반환하는 public getVersion 함수를 가져야합니다. – Rafael

답변

2

난 당신이 변수를 사용하여 일정에 액세스하려고 생각합니다. 어떻게 어디 [소스 코드]에서 (https://github.com/jamesiarmes/php-ews/blob/master/src/Client.php)

$ews_version = 'VERSION_2007'; 
$ref = new ReflectionClass(\jamesiarmes\PhpEws\Client::class); 
$version = $ref->getConstant($ews_version); 
+0

고마워요, 이것이 제가 찾고 있던 것입니다. –