이것은 무엇을 의미합니까?"Parse error: 구문 오류, 예기치 않은 T_PAAMAYIM_NEKUDOTAYIM"
T_PAAMAYIM_NEKUDOTAYIM은 정말 이국적으로 들리지만, 저에게는 확실히 말도 안 되는 소리입니다.저는 이 모든 것을 다음 코드 행까지 추적했습니다.
<?php
Class Context {
protected $config;
public function getConfig($key) { // Here's the problem somewhere...
$cnf = $this->config;
return $cnf::getConfig($key);
}
function __construct() {
$this->config = new Config();
}
}
?>
생성자에서 Config 개체를 만듭니다.강의 내용은 다음과 같습니다.
final class Config {
private static $instance = NULL;
private static $config;
public static function getConfig($key) {
return self::$config[$key];
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Config();
}
return self::$instance;
}
private function __construct() {
// include configuration file
include __ROOT_INCLUDE_PATH . '/sys/config/config.php'; // defines a $config array
$this->config = $config;
}
}
왜 이것이 작동하지 않는지 모르겠습니다. / 오류가 의미하는 바는...
T_PAAMAYIM_NEKUDOTAYIM은 PHP에서 사용하는 이중 콜론 스코프 해상도입니다 - ::
당신의 코드를 잠깐 보세요, 저는 다음 줄이 있다고 생각합니다.
return $cnf::getConfig($key);
그래야 한다
return $cnf->getConfig($key);
첫 번째는 메서드를 정적으로 호출하는 방법입니다. $cnf에 유효한 클래스이기도 한 문자열이 포함되어 있으면 이 코드가 유효합니다.-> 구문은 클래스/객체의 인스턴스에서 메서드를 호출하기 위한 것입니다.
이 문제를 가진 미래의 방문객들을 위해 제 2센트만 주세요.
이것은 PHP 5.3의 올바른 구문입니다. 예를 들어 클래스 이름에서 정적 메서드를 호출하는 경우:
MyClassName::getConfig($key);
$cnf 변수에 ClassName을 이전에 할당한 경우, 정적 메서드를 호출할 수 있습니다(PHP 5.3에 대해 설명합니다).
$cnf = MyClassName;
$cnf::getConfig($key);
그러나 이 신택스는 PHP 5.2 이하에서는 작동하지 않으므로 다음을 사용해야 합니다.
$cnf = MyClassName;
call_user_func(array($cnf, "getConfig", $key, ...otherposibleadditionalparameters... ));
이것이 5.2 버전에서 이 오류를 가진 사람들에게 도움이 되기를 바랍니다(이것이 오픈프로그 버전이었는지는 모르겠습니다).
예를 들어,
return $cnf::getConfig($key)
아마도 다음과 같아야 할 것입니다.
return $cnf->getConfig($key)
그리고 getConfig를 정적이 아닌 상태로 만듭니다.
여전히 이중 콜론을 사용해야 한다면 PHP 5.3+에서 를 확인하십시오.
오류는 이중 콜론 연산자의 "부적절한 사용" 때문입니다.
return $cnf::getConfig($key);
을 사용하는 것처럼::
클래스 자체의 정적 메서드를 호출하려고 합니다.예제에서는 인스턴스화된 개체에 대해 정적 메서드가 아닌 메서드를 호출하려고 합니다.
당신이 원하는 것은 다음과 같습니다.
return $cnf->getConfig($key);
위키피디아에 따르면, 그것은 "이중 콜론" 범위 해결 연산자를 의미합니다.
http://en.wikipedia.org/wiki/Scope_resolution_operator
그것은 그것의 이름입니다.::
교환입니다.
라라벨을 사용하는 모든 사람에게.Laravel 7.0에서도 같은 오류가 발생했습니다.오류는 다음과 같습니다.
syntax error, unexpected '::' (T_PAAMAYIM_NEKUDOTAYIM), expecting ';' or ','
내 Routes\web.php 파일에 있었는데, 이 파일은 다음과 같습니다.
use Illuminate\Support\Facades\Route;
use Illuminate\Http\Request;
use // this was an extra **use** statement that gave me the error
Route::get('/', function () {
return view('save-online.index');
})->name('save-online.index');
언급URL : https://stackoverflow.com/questions/1966010/what-does-this-mean-parse-error-syntax-error-unexpected-t-paamayim-nekudotay
'source' 카테고리의 다른 글
PHP & localStorage; (0) | 2023.07.23 |
---|---|
Git, 치명적:원격 끝이 예기치 않게 끊어졌습니다. (0) | 2023.07.23 |
자체 수정 코드를 사용하여 x86에서 오래된 명령 페칭을 관찰 (0) | 2023.07.23 |
풀에서 잘못된 데이터베이스 연결을 제거하는 방법 (0) | 2023.07.23 |
Oracle SQL과 SQL 파일에서 명령을 종료하는 방법은 무엇입니까? (0) | 2023.07.23 |