저는 초보자인데, laravel과 같은 많은 도구 클래스를 직접 선언하여 사용할 수 있다는 것을 알았습니다
요청 $request;
$요청->get();
클래스 변수를 선언하면 코드가 인스턴스화되나요?
Baidu에서 검색한 후 PHP 언어에서는 이 문제에 대해 질문한 사람이 없었고 Java만 있었으며 Java는 다음과 같습니다.Class1 item1;
객체 선언
참조 유형 생성 , 4바이트의 메모리를 점유하며, 참조가 어떤 유형(오브젝트 o 또는 From f)인지에 관계없이 4바이트의 메모리를 차지합니다.Class1 item1 = new Class1();
클래스 인스턴스를 만들고, 메모리를 할당하고(이 메모리는 클래스 자체의 크기와 관련됨) 참조 item1이 이 메모리의 시작 위치를 가리키도록 합니다.
그렇다면 $request
는 Request
에 대한 참조일 뿐이며 Request
는 아직 인스턴스화되지 않았으며 메모리에 존재하지 않습니다. , 그렇다면 왜 $request
에 포함된 메소드를 직접 사용할 수 있습니까? 소스 코드를 살펴보면 이 클래스의 속성과 메서드는 정적
정적이며 인스턴스화 전에 이미 메모리에 존재하지만 정적이 아닌 속성과 메서드도 많이 있습니다. get( )은 비정적 방법!
직접 호출하면 포인터 예외가 발생하지 않나요?
초보자에게 물어보세요!
PHP中文网2017-05-16 13:12:23
PHP에는 이런 종류의 구문이 없습니다.
표시되는 내용은 다음과 같아야 합니다.
Route::get('/', function (IlluminateHttpRequest $request) {
});
이것은 의존성 주입입니다
http://www.golaravel.com/lara...
过去多啦不再A梦2017-05-16 13:12:23
다음은 틀린 내용입니다. 소스코드를 잘 살펴보니 답이 이렇죠?
에
이 두 코드 이전에는 use IlluminateHttpRequest;
use는 네임스페이스만 사용하는데, 클래스를 호출하려면 클래스 파일을 로드(require)하거나 자동으로 로드해야 합니다. lavavel은 자동 로딩을 사용하므로 IlluminateHttpRequest를 사용하는 것은 Request 클래스를 직접 사용하는 것과 같습니다. 실제로 Laravel은 Request 클래스를 사용할 때 많은 작업을 수행하지 않습니다.
Laravel의 자동 로딩 기능은 다음과 같습니다.
인스턴스화되지 않은 클래스를 사용하면 자동으로 로드되어 인스턴스화되는 것을 볼 수 있습니다.