저는 초보자인데, 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에는 이런 종류의 구문이 없습니다.
으아악표시되는 내용은 다음과 같아야 합니다.
Route::get('/', function (IlluminateHttpRequest $request) {
});
이것은 의존성 주입입니다
http://www.golaravel.com/lara...
다음은 틀린 내용입니다. 소스코드를 잘 살펴보니 답이 이렇죠?
으아아아에
이 두 코드 이전에는
을 사용했습니다.use IlluminateHttpRequest;
use는 네임스페이스만 사용하는데, 클래스를 호출하려면 클래스 파일을 로드(require)하거나 자동으로 로드해야 합니다. lavavel은 자동 로딩을 사용하므로 IlluminateHttpRequest를 사용하는 것은 Request 클래스를 직접 사용하는 것과 같습니다. 실제로 Laravel은 Request 클래스를 사용할 때 많은 작업을 수행하지 않습니다.
으아아아Laravel의 자동 로딩 기능은 다음과 같습니다.
인스턴스화되지 않은 클래스를 사용하면 자동으로 로드되어 인스턴스화되는 것을 볼 수 있습니다.