다음 스크립트array_map() 폐쇄와 PHP에서 예상치 못한 T_FUNCTION 오류를 줄 5.4
/**
* Insert into DB using locally protected bind_and_execute() function.
* Using Preparing Statements, thus following the OWASP Standard
* @see https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet Reference source.
* @see MySQL::bindAndExecute() bindAndExecute()
*
* @param string $table The name of the table (without prefixes).
* @param array $values The value arrays in {name} => {value} pairs.
*
* @return array The newly insterted element.
*/
final public function insert($table, $values)
{
$cols = implode(', ', array_keys($values));
$vals = implode(', ', array_map(function($value) { return ":$value"; }, array_keys($values)));
$query = "INSERT INTO " . TABLE_PREFIX . $table . " ($cols) VALUES ($vals)";
return $this->bindAndExecute($query, $values);
}
...이 오류를 던지고 것은 :
Parse error: syntax error, unexpected T_FUNCTION, expecting ')' in [obscured].php on line [169]
이 때문에 array_map()
기능입니다 . 나는 그것을 옮겼다. 그리고 익명 함수 (또는 closure
)를 쓰고 있기 때문에 그것을 믿는다. 무슨 일이야? PHP5.4는 이것을 허용해야합니다! 그건 그렇고 PHP5.5와 함께 2 개의 다른 서버에이 스크립트를 설치했고 둘 다 작동했습니다.
미리 도움을 주셔서 감사합니다.
를 사용하여 누락, 당신은 익명 함수를 만들 필요가 없습니다하지만 당신은 단지 하나를 추가 할 수 있습니다 클래스. 이렇게하면 오류가 사라집니다. 공유하는 것은 의미가 없으므로 (코드는 구문이 정상입니다), 이것은 곧장 앞으로 나아갈 수있는 해결책 일 수 있습니다. – hakre