laravel 입문 지식 포인트 정리

10416 단어 laravel입문 하 다
laravel 입문
간단 한 소개
PHP 에서 가장 많이 사용 되 는 프레임 워 크 중 하나 로 서 Laravel 의 프레임 워 크 디 렉 터 리 는 특히 선명 하 게 배치 되 어 다양한 유형의 프로젝트 개발 에 적용 된다.오늘 은 laravel 입문 에 익숙 한 지식 이 필요 하 다 는 것 을 기록 하 겠 습 니 다.
1.루트 디 렉 터 리

그 중에서 Public/index.php 는 프로젝트 의 입구 파일 입 니 다.
2.설정

1)config 디 렉 터 리
이 폴 더 아래 에는 각종 프로필 이 포함 되 어 있 습 니 다.my sql 데이터베이스 연결 정보,redis,사용자 정의 프로필 정보 등 을 포함 합 니 다.
2).env 파일
환경 에 의존 하 는 변 수 를 저장 합 니 다.예 를 들 어 데이터 베이스 설정 은 버 전 라 이브 러 리 에 가입 되 지 않 기 때문에 민감 한 정 보 를 설정 합 니 다.예 를 들 어 정식 환경의 일부 제3자 응용 계 정,token 등 입 니 다.Yii 프레임 워 크 의 main-local.php 와 비슷 합 니 다.
용법 참조:env('DBHOST','192.168.1.223')
설명:.env 파일 에 설 정 된 DB 우선 사용HOST 에 대응 하 는 값 입 니 다.env 에 설정 이 없 으 면 이 설정 의 기본 값 인'192.168.1.223'을 사용 합 니 다.

3)용법 참고
config('redis_keys.redis_keys.all_follow_user')
3、MVC

4.경로
1.routes 디 렉 터 리
routes 디 렉 터 리 에는 정 의 된 모든 경로 가 포함 되 어 있 습 니 다.Laravel 은 기본적으로 웹.php,api.php,console.php,channels.php 등 네 개의 경로 파일 을 제공 합 니 다.그 밖 에 경로 파일 도 사용자 정의 할 수 있 습 니 다.

여기 서 비교적 중요 한 공식 적 으로 제공 하 는 기본 경로 파일 웹.php 와 api.php 를 소개 합 니 다.
1)web.php
파일 에 포 함 된 경로 가 RouteServiceProvider 를 통 해 도입 되 고 웹 미들웨어 그룹 에 제약 을 받 기 때문에 Session,CSRF 보호 및 Cookie 암호 화 기능 을 지원 합 니 다.상태 없 이 RESTful 스타일 의 API 를 제공 하지 않 아 도 된다 면 경로 가 기본적으로 웹.php 파일 에 정의 되 어야 합 니 다.
2)api.php
파일 에 포 함 된 경로 가 Route Service Provider 를 통 해 도입 되 고 api 미들웨어 그룹 에 제약 을 받 기 때문에 주파수 제한 기능 을 지원 합 니 다.이 경로 들 은 상태 가 없 기 때문에 이 경로 들 을 통 해 응용 에 들 어 가 려 면 token 을 통 해 인증 해 야 하고 Session 상태 에 접근 할 수 없습니다.
2.경로 정의

조금 복잡 한 상황:

3、RouteServiceProvider
파일 에 포 함 된 경로 가 RouteServiceProvider 를 통 해 도 입 됩 니 다.

5.중간 부품
미들웨어 를 언급 하면 app/Http/Kernel.php 파일 을 떠 날 수 없습니다.
1) kernel
Kernel 에 서 는 중요 한 미들웨어 목록 을 정의 합 니 다.모든 요청 request 는 응용 처리 되 기 전에 이 미들웨어 를 거 쳐 한 번 걸 러 야 어떻게 처리 할 지 결정 합 니 다.이것 은 중간 부품(middleware)의 작용 과 관련된다.
App\Http\Kernel

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
 /**
  * The application's global HTTP middleware stack.
  *
  * These middleware are run during every request to your application.
  *
  * @var array
  */
 protected $middleware = [
  \App\Http\Middleware\CheckForMaintenanceMode::class,
  \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
  \App\Http\Middleware\TrimStrings::class,
  \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
  \App\Http\Middleware\TrustProxies::class,
  \App\Http\Middleware\EnableCross::class,
 ];

 /**
  * The application's route middleware groups.
  *
  * @var array
  */
 protected $middlewareGroups = [
  'web' => [
   \App\Http\Middleware\EncryptCookies::class,
   \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
   \Illuminate\Session\Middleware\StartSession::class,
   // \Illuminate\Session\Middleware\AuthenticateSession::class,
   \Illuminate\View\Middleware\ShareErrorsFromSession::class,
   \App\Http\Middleware\VerifyCsrfToken::class,
   \Illuminate\Routing\Middleware\SubstituteBindings::class,
  ],
  'api' => [
//   'throttle:300,1',
   'bindings',
  ],
  'web_api' => [
//   'throttle:300,1',
   'bindings',
   'check_token'
  ],
  'admin_api' => [
//   'throttle:300,1',
   'bindings',
   'admin'
  ],
 ];

 /**
  * The application's route middleware.
  *
  * These middleware may be assigned to groups or used individually.
  *
  * @var array
  */
 protected $routeMiddleware = [
  'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
  'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
  'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
  'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
  'can' => \Illuminate\Auth\Middleware\Authorize::class,
  'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
  'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
  'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
  'check_token' => \App\Http\Middleware\CheckToken::class,
 ];
}
위의$middleware[]는 전 체 를 대상 으로 합 니 다.특히 HTTP 와 비교적 밑바닥 을 대상 으로 합 니 다.뒤의$middleware Groups[]와$route Middleware[]는 비교적 구체 적 인 실시 차원 입 니 다.개발 필요 에 따라 계속 추가 할 수 있 을 것 같 습 니 다.
App\Http\Kernel 이 계승 하 는 부모 클래스 Illuminate\Foundation\Http\Kernel 을 다시 봅 시다.

<?php

namespace Illuminate\Foundation\Http;

use Exception;
use Throwable;
use Illuminate\Routing\Router;
use Illuminate\Routing\Pipeline;
use Illuminate\Support\Facades\Facade;
use Illuminate\Contracts\Debug\ExceptionHandler;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\Http\Kernel as KernelContract;
use Symfony\Component\Debug\Exception\FatalThrowableError;

class Kernel implements KernelContract
{
 /**
  * The application implementation.
  *
  * @var \Illuminate\Contracts\Foundation\Application
  */
 protected $app;

 /**
  * The router instance.
  *
  * @var \Illuminate\Routing\Router
  */
 protected $router;

 /**
  * The bootstrap classes for the application.
  *    ,       
  *              bootstrap(Application $app)   ,
  *        bootstrap   。    boot()    。
  *   :      ,      ,   $request       。
  * @var array
  */
 protected $bootstrappers = [
  //          (.env   ?)
  \Illuminate\Foundation\Bootstrap\LoadEnvironmentVariables::class,
  //       (config   ?)
  \Illuminate\Foundation\Bootstrap\LoadConfiguration::class,
  //         
  \Illuminate\Foundation\Bootstrap\HandleExceptions::class,
  //    Facades
  \Illuminate\Foundation\Bootstrap\RegisterFacades::class,
  //    Providers
  \Illuminate\Foundation\Bootstrap\RegisterProviders::class,
  //    Providers
  \Illuminate\Foundation\Bootstrap\BootProviders::class,
 ];

 /**
  * The application's middleware stack.
  *
  * @var array
  */
 protected $middleware = [];

 /**
  * The application's route middleware groups.
  *
  * @var array
  */
 protected $middlewareGroups = [];

 /**
  * The application's route middleware.
  *
  * @var array
  */
 protected $routeMiddleware = [];
한 마디 로 하면 Kernel 은 두 가지 일 을 했 습 니 다.첫 번 째 는$bootstraps[]를 정의 하고 boot 시스템 의 준 비 를 마 쳤 습 니 다.두 번 째 는 각종 middleware 를 정의 하 는 것 입 니 다.이것들 은 모두$request 에 대해 가공,처리,선별,판단 을 하고 최종 적 으로 정확 하고 효과 적 인$response 를 형성 할 수 있 도록 준 비 를 했 습 니 다.모두 완 성 된 후에 index.php 중의$kernel->handle($request)을 실 시 했 습 니 다.$response 를 되 돌려 줍 니 다.
요약:
1) $request ---> $kernel { service providers/middlewares/routers } ---> $response
2)Kernel 은 큰 블랙박스 입 니 다.요청,출력 응답 을 보 내 고 저 희 는 서비스,미들웨어,경로 등 만 추가 합 니 다.
2) middleware

시스템 자체 VerifyCsrfToken.php

사용자 정의 미들웨어 CheckToken.php
기본적으로 미들웨어 의 구체 적 인 여과 작업 은 모두 handle 방법 에서 이 루어 진다.

일지
1)로그 설정 파일:config/logging.php

2) logging.php

3)사용 참고
로그::channel('wechatlog')->info("제3자 플랫폼 구성 요소 획득access_token",['data'=>$data]);
그리고 요청 이 완료 되면 storage/logs 이 폴 더 아래 에 해당 하 는 로그 기록 을 볼 수 있 습 니 다.

7.서비스 제공 자
1)사용자 정의 서비스 제공 자
laravel 에서 서비스 제공 자 는 사실은 공장 류 이다.그것 의 가장 큰 역할 은 서비스 바 인 딩 을 하 는 것 이다.우리 가 하나 이상 의 서 비 스 를 연결 해 야 할 때 서비스 제공 자 를 사용자 정의 한 다음 에 서비스 연결 의 논 리 를 모두 이러한 실현 에 놓 을 수 있다.larave 에 서 는 서비스 제공 자 를 스스로 정 하 는 것 이 매우 쉬 우 며,Illuminate\Support\ServiceProvider 와 같은 종 류 를 계승 하면 된다.
밤 을 들다
app/providers/AppServiceProvider.php

이 예 에서 register 방법 을 볼 수 있 습 니 다.이 방법 은 ServiceProvider 에서 정 의 된 것 입 니 다.사용자 정의 할 때 다시 써 야 합 니 다.이 방법 은 바로 서 비 스 를 연결 하 는 데 쓰 인 다.
2)laravel 사용자 정의 서비스 제공 자의 원본 코드 초기 화

3)config/app.php
이전 소스 코드 에서 도 볼 수 있 습 니 다.laravel 에서 사용자 정의 서비스 제공 자 를 불 러 올 때 실제 config/app.phop 이 프로필 에 있 는 providers 설정 절 에서 등록 할 서비스 제공 자 를 찾 습 니 다.

참조 링크:https://blog.csdn.net/qqtaizi123/article/details/95949672

좋은 웹페이지 즐겨찾기