Laavel 5 route, 이벤트 변형

14727 단어 PHPLaravel

annotation은 호스트에서 끊어져 제3자가 되었다.


모조 포장

Laavel 5 의 상황


본론으로 들어가기 전까진 지금의 상황입니다
지금 체크하고 계신 분들은 Laavel5가 2015년 1월에 나올 가능성이 높다는 걸 알고 계십니다.
곧 낡아질 수 있다는 메시지도 있고요.
또한, 현재(2014/12/01)β버전 없음
개발판을 설치한 후 5의 현재 상태에서 사용할 수 있다
간단하게 사용하면 크게 달라지지 않아요.
Laavel 패키지 개발자, 핵심에 익숙한 중급 및 고급
4보다 편리하고 쉽게 확장할 수 있는 방향
그럼 5에 추가된 루트와 이벤트 요청!

Laravel5 install


몇 가지 설치 방법이 있지만 평소와 같은 방법으로 개발판을 설치할 수 있다
$ composer create-project laravel/laravel プロジェクト名 --prefer-dist dev-develop
php artisan serve가 삭제된 것 같아서 간단하게 시작하려는 경우
$ php -S 127.0.0.1:8000 -t 'public/'
내장 서버만 시작
You have arrived.
실행 환경의 지정 방법이 변경되었습니다
프로젝트 경로의 .env.sample.env 등으로 변경하십시오.
에 기술된 APP_ENV=local에서 실행 환경 변경 가능
(물론 이전과 같은 방법을 사용할 수도 있으니 원본 코드를 읽으세요)

Laravel5 Router


표준router


이전과 마찬가지로 routes.php에서 경로를 기술할 수 있다
설치 즉시 이동할 수 있도록 몇 가지 루트 설명이 있습니다
파사드의 기술은 아니지만 이 근처에서 누군가가 나중에 쓸 거야!
app/Http/routes.php
$router->get('/', 'WelcomeController@index');
$router->get('/home', 'HomeController@index');
달러 루터\Illuminate\Routing\Router 대상은 특별한 변화가 없다
서비스 공급업체에서 자유롭게 수행할 수 있는 다양한 작업으로 확장app/Providers/RouterServiceProvider.php 바로 그거예요.
컨트롤러의 명칭 공간은 기본적으로 다음과 같다.
protected $namespace = 'App\Http\Controllers';
에서 기술한 일은 생략할 수 있지만, 특별히 사용하지 않아도 괜찮다
사용하지 않는 경우는 이전 그룹이 지정한 것과 같습니다
app/Http/routes.php
$router->group(['namespace' => 'App\Http\Controllers'], function($router) {
        $router->get('/', 'WelcomeController@index');
        $router->get('/home', 'HomeController@index');
    }
);

이용 방법


그럼 공회전을 이용해서 길을 만들어 보겠습니다.app/Http/routes.php에 기술된 내용은 논평할 것이다.
$ php artisan route:list
디스플레이가 없음을 확인하십시오. 디스플레이가 있으면 comple 파일이 있어야 합니다
$ php artisan clear-compiled
또는 삭제storage/framework/compiled.php라우팅 가능한 초대Illuminate\Routing\Annotations\Annotations초대하다
알맞은 물건
대상@Controller$router->controller()
카테고리@Resource$router->resource()
카테고리@MiddlewareFilter 처리 등
학급 방법@Where맞다
학급 방법@GetGET
메서드@PostPOST
메서드@PutPUT
메서드@PatchPATCH
메서드@DeleteDELETE
메서드@OptionsOPTIONS
메서드

방법 중 기술한 예


간단한 Get, Post 등 사용
app/Http/Controllers/SampleController.php
namespace App\Http\Controllers;

class SampleController extends Controller
{
    /**
     * @Get("sample")
     * @return string
     */
    public function sample()
    {
        return "sample";
    }
}
명령을 사용하여 GET 프로세스에서 사용할 Sample 방법을 지정합니다.
URI는 /sample그리고 아까 app/Providers/RouterServiceProvider.php에 다음과 같은 내용을 추가합니다.
app/Providers/RouterServiceProvider.php
    protected $scan = [
        'App\Http\Controllers\SampleController'
    ];
다음은 Controller의 시뮬레이션을 스캔하여 자동으로 경로를 만듭니다
$ php artisan route:scan
storage/framework/routes.scanned.php 파일을 만들거나 원래 시작한 사람이 추가됩니다
$router->get('sample', [
    'uses' => 'App\Http\Controllers\SampleController@sample',
    'as' => NULL,
    'middleware' => [],
    'where' => [],
    'domain' => NULL,
]);
브라우저 등을 방문하여 표시 여부를 확인하십시오sample!
스프링 프레임워크의 bean 파일의 루트 버전 같은 거예요.
또한 스캔하지 않아도app/Providers/RouterServiceProvider.php에서 다음 속성을 활성화합니다.
자동으로 추가됩니다!
protected $scanWhenLocal = true;
다른 포스트 같은 것도 거의 똑같아요.
다음은 필터와 루트의 이름을 지어보도록 하겠습니다.
처음 등록된 필터는app/Http/Kernel.php에서 auth를 사용합니다.
분명히 누군가가 상세하게 쓸 거야!
    /**
     * @Get("sample", as="sample", middleware={"auth"})
     * @return string
     */
    public function sample()
    {
        return "sample";
    }
scan을 다시 실행하려면route:list로 확인하십시오

브라우저에서 방문하면 로그인 화면으로 이동합니다. (준비가 되지 않았기 때문에 잘못된 화면일 것입니다.)
middleware와 when은 몇 개의 배열을 지정할 수 있습니다
    /**
     * @Get("sample/{id}", as="sample", middleware={"auth"}, where={"id": "[0-9]+"})
     * @param $id
     * @return string
     */
    public function sample($id)
    {
        return "sample";
    }
매개 변수를 필요로 하고 숫자 이외에 사용할 수 없는 루트의 경우 이렇게 됩니다
또한, 이전에 있는domain도 사용할 수 있기 때문에 같은 추가만 있으면 지정할 수 있습니다
    /**
     * @Get("sample")
     * @Middleware({"auth"})
     * @param $id
     * @return string
     */
    public function sample($id)
    {
        return "sample";
    }
또한 Middleware 및 Where는 별도로 기술할 수 있습니다.

클래스에 설명된 예


이전 Resource 디렉터와 마찬가지로 지정
namespace App\Http\Controllers;

/**
 * @Resource("sample", only={"index"}, names={"index": "index.name"})
 */
class SampleController extends \App\Http\Controllers\Controller
{

    public function index()
    {
        return "sample index";
    }

}
URI/sample 각자의 방법을 루트에 등록
only 지정은 index만 사용
name이 지정되지 않으면,prefix에sample을 자동으로 부여합니다
모든 이름 지정
또한@Controller 초대를 통해prefix 권한 수여
실행할 항목 지정domain
/**
 * @Resource("sample", only={"index"}, names={"index": "index.name"})
 * @Controller(prefix="api", domain="app")
 * @Middleware({"auth"})
 */
class SampleController extends \App\Http\Controllers\Controller
{

}
방법도 한층 더 기술하여 각양각색의 경로를 만들 수 있다
또 다른 여러 가지가 있는데, 스스로 시뮬레이션을 추가할 수 있다
이벤트에 관해서는 아직 쓰지 않았으니 다음에 쓰겠습니다

공유 라우팅


여러 명으로 구성된 팀이 개발했다면 모방만 했다면 이해하기 어려웠을 텐데
개발자의 취향에 따라 변형이 없는 두 가지 경로를 혼합하여 사용할 수 있다
routes.php를 삭제해야 하는 일은 없지만
초대 라우팅 우선 사용
또한, 이 경로들도route:cache 캐시를 통과할 수 있습니다
쓰면 길어요. 여기까지만 쓸게요.

Laravel5 event annotation


러터보다 훨씬 쉬워요.app/Providers/EventServiceProvider.php 기본 서비스 공급업체
러터와 마찬가지로 annotation을 이용하기 때문에 scan에서 배열을 사용합니다
서류는 어디에다 두어도 좋으니 내가 간단한 반을 만들게
app/Listener/SampleListener.php
namespace App\listener;

class SampleListener
{

    /**
     * @hears("accessEvent")
     */
    public function access()
    {
        echo "access";
    }
} 
단순히 문자열을 반환하는 간단한 이벤트입니다.@hears에 이벤트 이름 추가
그럼 똑같이 스칸에 추가반을 넣어야 돼요.app/Providers/EventServiceProvider.php
class EventServiceProvider extends ServiceProvider
{

    protected $scan = [
        "App\Listener\SampleListener"
    ];

}
스캔 명령은
$ php artisan event:scan 
예, 그렇습니다.
실행 후 확인event.scanned.php에 추가
물론 러터처럼 자동 추기도 가능합니다.
$events->listen(array (
  0 => 'accessEvent',
), 'App\listener\SampleListener@access');
방금 사용한 controller 사용
namespace App\Http\Controllers;

use Illuminate\Contracts\Events\Dispatcher;

class SampleController extends Controller
{

    /**
     * @Get("sample")
     * @return string
     */
    public function sample(Dispatcher $event)
    {
        $event->fire('accessEvent');
    }
}
어렵게 한 일이라 삽입법 없이 디스패치를 지정한다fire에서 이벤트 발생
브라우저에서 액세스
access로 표시해야 합니다!
이름을 몇 개 지을 수 있어서 다양한 게임을 할 수 있어요.
    /**
     * @hears({"accessEvent", "sample.event"})
     */
    public function access()
    {
        echo "access";
    }
각 기능은 모두 실제 설치된 코드에 기재되어 있다
다양한 시도하기 쉬운 설치 방법으로 루트 만들기 등!

좋은 웹페이지 즐겨찾기