다른 클래스보다 먼저 자동로드하는 Error
이라는 사용자 정의 클래스가 있습니다.PHP7 : 클래스가 인스턴스화 될 때까지 정적 클래스 함수를 호출하거나 볼 수 없습니다.
$Error = Error::getError();
: 내 마스터에서
class Error
{
// Singleton object. Leave $me alone.
private static $me;
public $errors; // Array of errors
public $style; // CSS rules to apply to error elements
private function __construct($style = "border:1px solid red;")
{
$this->errors = array();
$this->style = $style;
}
// Get Singleton object
public static function getError()
{
if(is_null(self::$me))
self::$me = new Error();
return self::$me;
}
//...
}
난 항상 코어 로직 전에이 사용자 정의 클래스의 싱글을 준비했습니다 포함 : 내 사용자 정의 클래스에서,이 같은 생성자와 싱글 가져 오기 기능이
Fatal error: Uncaught Error: Call to undefined method Error::getError()
당신이 더 이상 작동하지 않는 이유를 내가 이해하는 데 도움이 :
그러나, PHP 7이 지금 나에게 오류를주고있다? 내가 대신 Error 클래스가 모두로드되고 있는지 여부를 확인하려면이 시도했습니다, 그리고 작업 수행 (생성자를 호출) : 나는했습니다 않는
$Error = new Error();
은 어떻게 든 내가 정적 클래스 함수를 호출 할 수 없습니다 이 클래스를 인스턴스화했습니다. 이것은 필자가 필자가 가지고있는 많은 논리를 깨뜨릴 것이다.
PHP7에는 'Error' 클래스가 내장되어 있습니다. 아마도 네임 스페이스 오류가 발생했습니다. 'Error' 클래스가 커스텀 네임 스페이스에 존재합니까? http://php.net/manual/en/class.error.php –
영구적으로 PHP 7로 업그레이드 할 수있는 위치에 있다면 (더 이상 코드를 5.x로 실행할 필요가 없습니다) 아마도 내부 코드 자신의 자리에있는'Error' 클래스. –
@MichaelBerkowski 덕분에, 그것은 가장 유력한 원인 인 것 같습니다. 불행한 충돌이었습니다. 다행스럽게도 과거에 쉽게 작업 할 수 있습니다. 한 곳에서만 내 Error 클래스에 대한 정적 초기화 프로그램 함수를 호출하기 때문입니다. 이것이 원인인지 확인해 보겠습니다. "기본 제공"네임 스페이스 주석을 자유롭게 추가하십시오. 이 문제를 해결하도록하겠습니다. – Tiago