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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Laravel - 변환된 유효성 검사 규칙으로 API 요청 제공동적 콘텐츠를 위해 API를 통해 Laravel CMS에 연결하는 모바일 앱(또는 웹사이트) 구축을 고려하십시오. 이제 앱은 CMS에서 번역된 콘텐츠를 받을 것으로 예상되는 다국어 앱이 될 수 있습니다. 일반적으로 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.