2017-10-22 11 views
3

문자열이어야합니다, 나는 7PHP 5.3 함수 이름은 내가이 줄에 오류 <code>Function name must be a string</code>있어

public static $renderers = array(); 

public static function somefunction($tpl, $params) 
{ 
return self::$renderers[$tpl]($params); 
} 
+0

질문이 있으십니까? – Quentin

+0

@Quentin 예 문제가 무엇인지 알고 싶습니다. – Abudayah

+0

PHP7에서 제대로 작동합니다. https://3v4l.org/klC6l이 코드가 현재 진행중인 작업을 정확히 나타내지 않으면 문제를 재현하기 위해 실행할 수있는 코드를 제공하십시오. 네가 PHP5에서 그것을 실행한다면, 그것은 호환성 문제이다. –

답변

1

당신은에 폐쇄를 할당 할 필요가이 라인은 PHP로 작성된 때문에 호환성 문제가있을 수 있습니다 생각 변수를 먼저 실행하기 전에,

$foo = self::$renderers[$tpl]; 
$foo($params); 
+0

그리고 설명에 따르면 PHP 7.0+가 변수 표현식을 구문 분석하는 방식이 변경되었습니다. http://php.net/manual/en/migration70.incompatible.php#migration70.incompatible.variable-handling 여기에 설명되어 있으며 https://wiki.php.net/rfc/uniform_variable_syntax 여기에 설명되어 있습니다. –