SCRAPE DATA WITH LARAVEL – Easy web scraping tutorial 📊

안녕하세요 모두들, 저는 데이터를 긁어 모으는 방법에 관해서는 여기에있는 빠른 설명을 살펴 보겠습니다

다른 웹 사이트 이렇게하는 법을 배웠을 때 문자 그대로 데이터를 가져올 수 있기 때문에 정말 멋졌습니다 모든 웹 사이트와 구문을 사용하기 정말 쉽습니다 나는 이걸 사용하려고하는데, 어떻게 발음하는지 (goutte) 모르겠지만, 이것은 도서관 당신은 작곡가를 사용하여 그것을 설치하십시오

그래서 저는 여러분이 방금 실행 한 빠른 명령을 작성하려고합니다 웹 사이트에서 무엇이든 긁어내는 데 사용할 수 있습니다 따라서 이것을 먼저 설치하십시오 프로젝트의 루트 디렉토리에 붙여 넣기 만하면됩니다 저것을하고있는 thats는 다만 나의 것을 설치할 것이다, 나는 다만 다른 창을 열 위하여 가고있다 그리고 명령을 작성하십시오

이것이 우리가 나중에 터미널에서 실행할 수있는 명령을 만드는 것입니다 그래서 내가 어디에 넣을 지 보여 드리겠습니다 그렇게하면 콘솔에 들어가서 명령을 입력하면 명령을 다 마칩니다 다음과 같이 make : command를 입력하면이 명령을 입력 할 수 있습니다 운영

나는 스 크레이퍼를 넣을거야 : 시작 목록에 대한 설명 만 입력 할 필요는 없습니다 php artisan을 작성했다면 설명은 여기에있는 흰색 텍스트입니다 잘만되면 그것이 끝나기를 바랐다 그래, 우리 새로운 명령이 이미 거기에있다

그게 네가 끝났는지 보자 그래서 우리가 처음에이 두 가지를 복사하고 문자 그대로 복사한다면 이것은 클라이언트와 마찬가지로 시간 초과 및 사물과 같은 일부 기본값을 설정합니다 당신이 모든 것을 그대로두고 간다면 그렇게 될 것입니다 그래, 그래 그래서 당신이 이것을 바꾸면 그렇게하고 싶습니다

내가이 일을 한 지 오래 되었으니 나는 이것이 효과가 있기를 바란다 이제 그걸 시도해보고 오류인지 아닌지 확인하십시오 시작 스크래퍼에서 이름을 지정한 명령을 입력하면 : start 실제로 이번에는 오류가 발생하지 않은 것을 사용하도록하겠습니다 일했습니다 그래서 우리가하고 싶은 것은 일단 당신이 우리가 이것을 찾고자하는 페이지로 간다면입니다

내가 사용하는 예 따라서 이것이 할 일은 링크가 있고 통과하는 모든 H2 태그를 살펴 보는 것입니다 각각 하나씩 반복하고 각 노드를 반복하며 노드에서 텍스트를 인쇄합니다 그래서 우리는 실제로 그것을 배치하고 그것이 무엇을하는지 볼 수 있습니다 해당 페이지에 H2 태그가 있는지 확실하지 않습니다

오 그래, 이것들은 그 페이지에 링크가있는 H2 태그 다 우리가 할 수있는 일은 BBC 사이트를 보는 것입니다 그래서 제가하고 싶은 것은이 헤드 라인을 보는 것입니다 나는 그들이 우리가 사용할 수있는 수업을 가지고 있는지 궁금해 이 박스들 각각은 클래스를 가지고 있기 때문에 모두 똑같을 것입니다

우리가 할 수만 있다면 이걸 해봐 그래서 당신은 할 수 있습니다 클래스 이름을 입력하면 모든 텍스트가 출력됩니다 그 클래스를 가진 div는 볼 수 있습니다 어쩌면 그건 사실이 아니에요

기본적으로 이것들을보고 있습니다 이 항목들과 각 항목에서 동일한 것이 무엇인지를 볼 수 있으므로 반복 할 수 있습니다 나는 BBC 사이트에서 한번도 해본 적이 없기 때문에 약간의 시행 착오가있다 먼저 기사 페이지에서 시도하고 해보십시오 이 기사를 사용하여 전체 기사를 가져올 수 있는지 살펴 봅니다

오하이오 나는이 URL이 심지어 BBC가 아니라는 것을 깨달았습니다 왜 작동하지 않는 것입니까? 오른쪽으로 돌아갈 수 있습니다 지금 작동하는지 확인하십시오 오, 그래, 모든 일들이 그렇게 잘 진행되었다 그것이 제목을 얻었고 그 다음 그 설명을 얻었 기 때문에 그것은 조금 더러워 보인다

잘 그러나 이제는 기사를 사용해보십시오 그래서 당신이 할 수 있다면 Phillip Prince 기사 그래서 당신이 할 일은 홈페이지에서 당신이 할 수있는 일이며, 그 각각에 대한 기사는 각 기사에 대해 이와 같이 별도의 작업을 실행할 수 있습니다 그런 다음 각 기사의 텍스트를 꺼내십시오 이 이야기 몸 안쪽을 시도하고 그것이 작동하는지보십시오

이것은 문서의 모든 텍스트입니다 일부 사이트는 그런 것들을 내장하고 있습니다 당신이 그것을 긁어내는 것을 멈추십시오 그리고 이것은 그것들 중 하나 인 것처럼 보입니다 당신이 얻을 수있는, theres, 나는 이것이 모든 다른 것들을 가지고 있으므로이 생각 당신은 당신이 링크의 URL처럼 얻을 수 있도록 할 수있는 각 요소를 끌어낼 수 있습니다

메타 태그에서 설명과 같이 얻을 수있는 많은 것들이 있습니다 나는 지금 당장 그것에 맡겨두고 너와 놀 수있게 해줄 것이라고 생각하지만 나는 올 수도있다 이것으로 돌아가서 깊이있는 것을 한 곳에서 전체 웹 사이트 또는 그와 비슷한 것을 긁어 낸다 다음 비디오에서 보도록하겠습니다

Impersonating Users in Laravel And Example of TDD using PHPUnit

안녕 얘들 아, 우리 채널에 오신 것을 환영합니다 오늘은이 비디오에서 가장 한 사용자에 대해 이야기하겠습니다

프로젝트의 상황을 고려하십시오 사용자가 설명 할 수없는 상황이 발생합니다 이러한 상황에서 문자 그대로 흉내낼 수 있다면 유용합니다 로그인 자격 증명을 쓰지 않고 계정에 로그인하고 다음 작업을 수행하십시오 그들을 대신해서

또는 사용자가 오류가 발생하면 자신의 오류를 볼 수 있습니다 이 동영상에서 개발할 데모 앱은 다음과 같습니다 이미 Harish라는 관리자 계정으로 로그인하고 있습니다 관리자 슬래시 가장 자리 페이지로 이동합니다 여기서 우리는 다른 사용자의 이메일 주소 (예 : john@example

com)를 입력 할 수있는 간단한 양식을 가지고 있습니다 클릭 할 때 가장 버튼을 클릭합니다 자, 이제 우리는 그 이메일 주소를 사용하여 로그인했습니다 이제 우리는 자신이 필요한 모든 것을 할 수 있습니다 여기서 버튼을 가장하는 것을 중지했습니다

이제이 버튼을 클릭하면 관리자 계정 Harish로 다시 전환됩니다 이 기능을 개발하기 위해 PHPUnit 테스트 케이스도 작성합니다 따라서이 채널을 처음 사용하는 경우 앞으로 이동하기 전에 빨간색 가입 버튼을 누르십시오 벨 아이콘을 누릅니다 따라서 곧 출시 될 비디오를 놓칠 수 없습니다

이제 시작하겠습니다 먼저, 새로운 Laravel 프로젝트를 만들 것입니다 가장이라는 이름을 지어 봅시다 다음으로 cd 가장합니다 이 프로젝트를 편집기에서 엽니 다

이제 우리는 dot env 파일로 데이터베이스를 구성 할 것입니다 이미 mysql에 데이터베이스를 만들었습니다 그래서, 여기서 데이터베이스 이름은 가장이고, DB 사용자 이름은 qirolab이고 암호는 비밀입니다 터미널에서, 나는 php artisan을 실행하여 빠른 인증을 생성하는 인증을한다 발판

다음으로 우리는 PHP artisan migrate를 실행하여 데이터 베이스 다음 단계는 테스트 케이스를 위해 phpunitxml 파일을 구성하는 것입니다 아래쪽에서 데이터베이스 자격 증명을위한 환경 변수를 추가 할 것입니다 여기에 DB_CONNECTION sqlite를 추가 할 것입니다

config databasephp 파일이 보이면 여기 sqlite, 우리는 DB 데이터베이스를 추가해야합니다 그래서 phpunitxml에서 우리는 메모리에 DB_DATABASE를 추가 할 것입니다 테스트를 실행하기 위해 일반적으로 SQLite in-memory 데이터베이스를 사용합니다

테스트를 위해 데이터베이스의 트랜잭션, SQLite 메모리 내에서 이러한 트랜잭션 수행 매우 빨라서 몇 초 안에 수백 건의 테스트를 수행 할 수 있습니다 이제 모든 기본 구성이 완료되었습니다 이제 우리는 사용자 기능을 가장하려고 시도 할 것입니다 시험을 치러 시작할 것입니다 당신은 우리가 ExampleTest

php 파일을 가지고 테스트 기능에서 볼 수 있습니다, 그럼, 이것을 삭제하자 Unit 디렉토리에서 ExampleTestphp 파일을 볼 수도 있습니다 이것도 삭제하십시오 다음, 터미널에서, 나는 PHP를 장인이 테스트를 가장 할 사용자 테스트를 실행합니다 그것은 테스트 기능 디렉토리에 ImpersonateUserTest

php 파일을 만듭니다 상상할 수있는 것처럼, 이와 같이 사용자가 로그인 할 수있는 엔드 포인트를 노출하면 사용자라면이 끝점이 확실히 보호되어야합니다 관리자 만 열 수 있습니다 이를 위해 관리자가 아닌 사용자가 가장 할 수없는 페이지를 만들 수 없습니다 이제 우리가 손님이라면 관리자 슬래시에 액세스 할 수있는 권한이 없습니다

엔드 포인트를 가장하려고합니다 따라서 관리자 슬래시를 가장하려고 시도하면 가장 할 수 있습니다 로그인 페이지로 리디렉션됩니다 이제 이것을 테스트하기 위해 터미널에서 우리는 공급 업체 bin phpunit, 내 터미널에서 필자는 PHPUnit 별칭을 만들었습니다 따라서이 긴 경로를 실행하는 대신 PHPUnit을 실행할 수 있습니다

여기에 응답 상태 코드 [404]가 예상대로 생성됩니다 끝 점이 아직 없습니다 이제 webphp로 이동하여 여기에 경로를 추가하겠습니다 경로는 관리자가 가장합니다

나는 항상 Admin 네임 스페이스에 관리 경로를 추가하려고합니다 여기 컨트롤러는 Admin ImpersonateController @ index입니다 이제 PHPUnit을 다시 실행하면 500 개의 상태 코드가 생성됩니다 그러나 그것은 어떤 오류에 대한 피드백을 표시하지 않았습니다 그럼, 우리가 뭘할지, 여기 전화 할게

이것은 예외 처리 방법이 없습니다 PHPUnit을 다시 실행하십시오 이제 문제에 대한 적절한 피드백을 얻었습니다 이 가장 컨트롤러는 존재하지 않습니다 나는 항상 예외 처리없이 우리의 테스트를 좋아한다

테스트가 실패 할 경우 항상 적절한 피드백을보고 싶어합니다 따라서 문제가 무엇인지 쉽게 확인할 수 있습니다 그래서, TestCasephp에서, 여기서 우리는 public function setUp을 말할 것입니다 부모 집합 여기서 예외 처리없이 이것을 호출 할 것입니다

이제 여기서이를 삭제할 수 있습니다 다시 phpunit을 실행 해 봅시다 여기에 올바른 피드백이 있습니다이 가장 컨트롤러는 존재하지 않습니다 이제이 컨트롤러를 만들어 보겠습니다

PHP 장인 확인 : 컨트롤러 Admin \ ImpersonateController PHPUnit 실행 이제 인덱스 메소드가 존재하지 않습니다 이 방법을 만들어 보겠습니다 App Http 컨트롤러 Admin Impersonate 컨트롤러, 공개 함수 인덱스 다시 테스트를 실행하십시오 이제 우리는 200 개의 상태 코드를 얻습니다 그것은 인덱스 메소드를 치고 있습니다

하지만 여기서 우리는 로그인 페이지로 리다이렉트하는 것을 주장하고 싶다 자, 이제이 메소드를 작성해 보겠습니다 이 미들웨어와 패스 인증 그럼 다시 한번 시도해 봅시다 이번에는 예상대로 인증되지 않은 예외가 발생합니다

그래서, 초록색으로 만드십시오 여기 TestCasephp에서 이것을 주석 처리 할 수 ​​있습니다 실행 phpunit, 이제 그것은 녹색과 우리의 테스트가 전달됩니다 또는 우리가 할 수있는 일을 주석 처리하십시오

여기에 Exception Handling을 추가 할 수 있습니다 다시 한 번 쏴, 우리는 녹색이된다 로그인하지 않은 상태에서이 엔드 포인트를 방문하면 로그인 페이지로 이동해야합니다 그러나 사용자가 로그인 한 것으로 가정 해 봅시다 그래서 우리는 이것을 사용자라고합니다

이 사용자를 생성합시다 공장 App 사용자 클래스 만들기 그리고 여기 똑같은 일을 다시하고 상태 코드를 주장 할 것입니다 403입니다 그래서이 방법으로 우리는 당신이 손님이고이 일을하려고한다면 그것이 안된다는 것을 확인할 수 있습니다 일하다

그리고 일반 사용자라면 아무 것도 작동하지 않을 것입니다 우리는 테이블 사용자가 아니더라도 다시 실행할 것입니다 이것은 우리가 데이터베이스 새로 고침을 사용해야하기 때문입니다 테스트가 끝난 후 테스트 및 롤백 다시 한 번 실행하면 403 번이 아니라 200 번 상태가됩니다

이제 여기에는 커스텀 미들웨어 또는 다른 것이 필요합니다 따라서 간단하게 유지하고 사용자가 무언가를 관리 할 수 ​​있는지 여부를 알려 드리겠습니다 그렇게 이제 부팅 서비스 방법에 대한 인증 서비스 제공 업체로 이동합니다 이전에 게이트를 말할 것입니다

함수를 호출하면 사용자를 받아 들일 것이고 여기서는 필요한 논리를 수행하여 현재 인증 된 사용자에게 작업 수행 권한이있는 경우 그럼 여기서 뭘 할거야 사용자 테이블에 역할 열이 있다고 가정 해 보겠습니다 사용자 역할이 admin 인 경우 true를 반환합니다 이제 사용자 테이블에 역할 열을 추가해 보겠습니다 데이터베이스 이주에서 사용자 테이블 이주 파일을 작성하고, 여기에 테이블 문자열 역할을 추가하고 기본값은 회원

phpunit을 실행하고, 클래스 앱 제공 업체가 없습니다 여기에 타이핑 실수가 있습니다 이미 알아 차렸을 것입니다 다시 테스트를 실행하십시오 응답 상태 코드 403은 리디렉션 상태 코드가 아닙니다

우리는 여기서 실패하고 있습니다 이것은 우리가 여기에서 인증 미들웨어를 삭제했기 때문입니다 이것을 다시 추가합시다 PHPUnit과 우리는 녹색 얻을 지금까지 우리는 브라우저에서 이것을 테스트하지 않았습니다

브라우저에서 테스트하기 전에 PHP 숙련자 마이그레이션을 실행 해 봅시다 새로 고침 사용자 테이블에 새 역할 열을 추가했기 때문입니다 다음으로, 나는 터미널을 나눌 것이고 여기서 나는 달릴 것이다 php artisan serve 브라우저에서이 URL 열기 손님으로 admin / impersonate 경로를 방문하려고하면 즉시 리디렉션됩니다 로그인 페이지

이제 새 계정을 등록하십시오 Harish harish@examplecom 암호 및 등록 다시 admin / impersonate 경로를 방문하려고 시도하면 이번에는 403 오류가 발생합니다 관리자가 아닙니다

자, 터미널, php artisan tinker로 가자 사용자가 동일 함 App 사용자의 첫 번째 사용자 역할이 admin과 같습니다 다음으로 사용자 저장 이제 우리는 admin 사용자입니다 이번에는 admin / impersonate에 방문하면 이번에이 페이지에 액세스 할 수 있습니다 물론 우리는 컨트롤러에서 아무것도 인쇄하지 않았기 때문에 여기서는 아무 것도 볼 수 없었습니다

동작 그것을 확인하기 위해 echo "hello"가 출력됩니다 다음 단계는이 페이지에 대한보기를 만드는 것입니다 이제이보기를 만들어 보겠습니다 뷰 관리자 가장 인덱스를 반환합니다

이 인덱스 블레이드 파일을 작성해 보겠습니다 리소스보기 admin impersonate indexbladephp 다음으로 auth loginblade

php에서 일부 마크 업을 강요합니다 여기에서는 사용자를 가장하는 말을 할 것입니다 양식 작업은 admin slash impersonate이며, 이메일 필드가 필요합니다 다음으로이 비밀번호 필드가 필요 없습니다 그래서 이것을 지우십시오

그리고이 기억 영역도 필요하지 않습니다 다음은이 로그인 버튼으로 가장하는 것입니다 그리고 우리는 이것을 필요로하지 않습니다 브라우저에서 보도록하겠습니다 새로 고침

그리고 이것은 우리의 형식입니다 그런 다음이 양식을 제출하고 해당 사용자를 가장하려고합니다 그래서 이것을위한 테스트를 만들어 봅시다 그래서, ImpersonateUserTestphp에서이 테스트와 마찬가지로, 우리는 그것을 원하지 않습니다

관리자가 아닌 사용자가 가장 (impersonate) 요청을 제출할 수 있습니다 따라서 비 관리자 사용자는 사용자를 가장 할 수 없습니다 우리의 테스트가 거의 동일하기 때문에 여기에서 복사 해 봅시다 여기에 게시물 요청을 제출합니다 이것은 또한 게시물 요청입니다

이제 phpunit을 실행하면 405 오류가 발생합니다 우리가 아직 게시 경로를 만들지 않았기 때문입니다 자,이 게시물 경로를 만들어 보겠습니다 webphp에서 이것을 복제하십시오

이것은 게시 경로이며 행동은 가장입니다 이제 PHPUnit을 실행 해 봅시다 그리고 우리는이 가장을 만들지 않았는데도 녹색을 얻습니다 방법 우리는 이미 여기에서 보호를 구현했기 때문입니다

위생 검열을 위해 이것을 설명합시다 우리는 PHPUnit을 사용하여이 특정 테스트를 실행할 수 있습니다 – 필터는 동등하고 테스트합니다 여기서 실패했습니다 이제 주석 처리를 제거하고 다시 실행하십시오 통과합니다

다음으로 관리자가 사용자를 가장 할 수 있는지 확인하기 위해 다른 테스트를 추가해 보겠습니다 여기에는 사용자가 있으며 관리자도 있습니다 사용자 우리는이 역할을 관리자와 동일하게합니다 그런 다음 관리자로 로그인하여 관리자로 로그인합니다

그런 다음이 엔드 포인트를 제출하고 원하는 사용자의 이메일을 전달합니다 의장 그리고 나서 마침내 우리의 주장은이 주장이 될 것입니다 auth id는 사용자와 같습니다 신분증

괜찮아 그래서 우리는 관리자로 로그인하는 것입니다 그런 다음이 엔드 포인트에 게시물 요청을 제출하여 해당 사용자를 가장합니다 그리고 우리가 모든 것을 올바르게했다면 현재 인증 된 사용자는 관리자가되면 이제는 가장하고있는 사용자가됩니다 계속 해보자

물론 그것은 실패합니다 여기서 우리는 오류를 가장하는 메소드가 존재하지 않습니다 자,이 방법을 만들어 보겠습니다 이 테스트를 다시 실행하십시오, 이번에는 오류가 발생합니다 진행합니다

이제 우리의 주장은 실패합니다 2 경기 예상 1 이제이 기능이 어떻게 작동하는지 살펴 보겠습니다 여기에 요청 객체를 가져 오자 자, 여기, 우리는 물론 이메일을 검증하기를 원합니다

전자 메일이 필요하며 전자 메일 주소인지 확인해야합니다 또한 사용자 테이블에 있는지 확인하고 싶습니다 다음으로이 이메일에 연결된 사용자를 찾아 봅시다 사용자는 이메일이 요청 이메일 인 첫 번째 사용자를 잡는 앱 사용자와 같습니다 자, 여기서 내가 할 일은 인증 ID를 세션에 넣을 것입니다

그래서 우리는 session helper를 세션 impersonate_by auth id에 넣을 것입니다 그런 다음 여기에 해당 사용자로 로그인합니다 그래서, 정식 로그인과 패스 사용자 다음으로 홈페이지로 리디렉션합니다 리디렉션 홈으로 돌아갑니다

시험을 치자 이번엔 초록색입니다 이제 브라우저에서 살펴 보겠습니다 브라우저에서이를 테스트하려면 가장 할 새 계정이 필요합니다 이제이 관리 사용자를 로그 아웃하고 새 계정을 등록 해 봅시다

John John@examplecom 암호 및 등록 이 사용자는 회원이며 가장 할 수있는 권한이 없습니다 따라서 로그 아웃하고 관리자로 로그인하십시오 그것은 harish@examplecom입니다

admin slash sperson으로 이동합니다 여기에 회원 사용자 john@examplecom의 전자 메일 주소를 입력합니다 가장을 클릭하십시오 이제 우리는 요한으로 가장하고 있으며 요한을 대신해서 무엇이든지 할 수 있습니다

유일한 문제는 지금 로그 아웃하지 않으면 빠져 나갈 실제 방법이 없다는 것입니다 이제는 버튼을 만들고, 그 버튼을 클릭하면 우리는 가장을 멈추고 관리자에게 다시 로그인하십시오 먼저 테스트를 작성하겠습니다 여기에서 관리자 사용자가 가장 (impersonating)을 중지 할 수 있다고 말합니다 여기에서 모두 복사하십시오

따라서 관리자로 로그인 한 다음이 끝점에 게시물 요청을 제출해야합니다 해당 사용자를 가장하기 위해 여기에 있습니다 그리고 나서 현재 인증 사용자는 관리자가 아니어야합니다 이제는 해당 사용자 여야합니다 이제 가장 (impersonating)을 중지하기 위해이 끝점에 삭제 요청을 보냅니다

다음은이 주장이 auth id가 admin id와 같음을 나타냅니다 이 테스트를 실행 해 보겠습니다 경로를 만들지 않았기 때문에 실패합니다 그래서, webphp에서

이것을 복제하십시오 이것은 삭제 경로입니다 그리고 그 행동은 멈춘다 이제이 테스트를 실행하면 무단으로 예외가 발생합니다 이는이 삭제 요청을 제출할 때이 사용자로 로그인했기 때문입니다

그 사용자는 회원 사용자입니다 가장 (Impersonate) 컨트롤러에서이 경로를 보호했으며 유일한 관리자 만 사용할 수 있습니다 사용자 그래서, 여기서 우리는 중지 방법을 제외한 모든 것을 보호 할 것이라고 말할 것입니다 그리고 여기에 사용자가 가장하는 것을 중지 할 수 있습니다

테스트를 실행하면 다시 실패합니다 중지 방법이 존재하지 않습니다 자,이 방법을 만들어 보겠습니다 테스트를 다시 실행하십시오 이번에는 우리의 주장이 실패합니다

그래서, 우리가 어떻게 통과 시킬지 여기에 우리는 세션에 관리자 아이디를 저장했습니다 그래서, 우리는 그 id를 잡고 그 admin 사용자로 로그인 할 것입니다 그래서 여기에 Auth loginUsingId와 impersonate_by를 가져옵니다 세션에서

이제 더 이상 세션에서 impersonate_by가 필요하지 않습니다 그래서 이것을 지우십시오 세션 impersonate_by을 잊어 버려 그런 다음 관리자 가장을 페이지로 리디렉션합니다 그게 전부예요

테스트를 해보 죠 그리고 이번에는 초록색입니다 이제 브라우저에서이를보고 싶습니다 먼저 가장하지 마세요 버튼을 추가하십시오 탐색 표시 줄에

이를 위해 appbladephp 레이아웃으로 이동해 보겠습니다 바로 여기에 버튼을 추가 할 것입니다 그래서 여기에 우리가 말하길, 세션이 다음으로 가장하여 추가하는 경우 li class nav-item form 메소드 게시 조치는 admin slash impersonate입니다

csrf 토큰 및 메소드 삭제 버튼 클래스 btn btn-link 그리고 여기서 우리는 도용을 중지한다고 말합니다 여기 모두 있습니다 브라우저로 이동합니다 새롭게 하다

여기서 우리는 "도용 중지"버튼을 가지고 있습니다 이것을 클릭하십시오 관리자 인 Harish에게 다시 회신합니다 한 번 더 보자 우리는 john@example

com hit impersonate로 가장 할 것입니다 이제 우리는 John으로 로그인하고 대신 John을 대신하여 조치를 취할 수 있습니다 명의 도용을 중지하면 관리 사용자 Harish에게 다시 전환됩니다 이것은이 비디오의 전부입니다 튜토리얼이 마음에 들면 좋아하는 버튼을 클릭하고이 비디오를 공유하고 구독하는 것을 잊지 마세요

우리 다음 곧 출시 될 비디오에서 곧 만나요

Curso Laravel. Laravel collective. Paquete forms & HTML. Vídeo 42

안녕하세요? 이 Laravel 과정을 집합 우주선에 대해 이야기 해 봅시다 특히 패키지 양식 및 html 이 패키지는 안전하게 다음에 사용하십시오

동영상이지만 Laravel의 동영상은 무엇인가요? 단체 및 패키지 양식 및 html 나는 선상에서 무슨 말을하는거야? collective는 프로젝트로서 단어는 집단적이라는 것을 나타냅니다 모든 사람에 의해 유지되고 발전되었다 프로그래머 커뮤니티 배의 개발자 및 무엇을 위해 이 우주선 프로젝트 집단적으로 우리가 프로젝트 기능의 배송 흥미로운 점은 그들은 일을 많이하고 다른 일을 용이하게한다 부가 특성 매우 흥미로운 기능 이러한 기능 및 기능 매우 흥미 롭습니다 말하기가 제거되었습니다

조금씩 코드 아라벨과없이 하지만 오늘은 여전히 꽤 오랫동안 Laravel의 개발자 커뮤니티 그러니 집합 함을 설치하십시오 우리의 잘 할 수있는 프로젝트 Laravel collective to date counts 5 개의 패키지가 양식 패키지와 우리가 볼 것 인 html 더 이상 우리에게 관심이없는 우리는 이전 비디오에서 우리가 가진 것을 기억합니다 양식을 꾸미고있다 내가 한 마디로 언급 한 그렇지 않은 사람들의 동영상 그들은 html을 알고 있어야했기 때문에 좋은 일을 계속하기 전에 그것을 안다 Laravel의 공식 및 HTML 패키지 집합 적으로 양식을 만들 수 있습니다

간단한 방식으로 코딩 꽤 – 많이 알 필요가없이 비록 그들이 여전히 고려 html 그것을 아는 것이 필수적이지 않다 또한 원격 패키지 당신 존스턴은 아이언 키 패키지를 존스합니다 Wii와 패키지 모두 그리고 각 패키지는 내가 말했듯이 우리가 작업을 간소화하는 기능 이 패키지들을 설치하는 방법을 보자 우리 프로젝트에서 어떻게 사용하는지 그것을 위해 가라 다음과 같은 검색 엔진을 사용하는 것이 좋습니다

예를 들어 google과 enter는 다음과 같습니다 아라벨 검색 집단적 그가 우리에게 제공하는 첫 번째 링크는 이미 여기와 같이 적합하다 우리는 패키지 양식과 html에 액세스 할 수 있습니다 하지만 우린 라벨을 누를거야 집단적이며 여기에 다섯 가지가있다

그가 말한 패키지는 이 프로젝트 내에서 표기법 html 포럼 모두 키위처럼 키위를 추적 그런 다음 우리가 클릭 한 흥미로운 점은 우리가 lara를 사용하여 양식 만들기 집단의 그래서 우리는 html과 폼을 클릭합니다 잘이 문서에서 첫 번째 그들이 우리에게 제공하는 것은 어떻게 집단을 위해 설치하다 특히 fonsi html 패키지를 우리 함선 프로젝트가 설치가 시작되어야합니다 작곡가를 사용하고 우리가 파일을 지시 할 작곡가 우리 프로젝트의 작곡가 punto jason 우리는 부유 한 공기를 더할 것입니다 집단 배 글쎄, 아무것도 따르지 않을거야 지시 사항은 이걸 복사 할거야

작곡가 rico air & cetera 등등 통제 c 우리가 가고있다 우리의 콘솔과 그럼 우리가 제기 우리는 컴퓨터의 폴더에 들어간다 프로젝트를 만든 다음 붙여 넣습니다 우리가 한 번 가르치고 이 언론에 들어가서 우리는 풀어 줘 설치하고 무엇이든 할 수있다

해야하기 전에 필요하다 전에 포함시킨이 작업 내가 포함시킨이 지시 작곡가 업데이트 지시 작곡가가 자신을 업데이트하기 위해 가능한 가장 최신 버전으로 동영상이 끝나면 일시 중지합니다 웹을 다시 시작하는 데 필요한 모든 것을 설치하십시오 너 끝냈어 우리가 콘솔에서 한 일 그럼 우리가 얻은 것은 너가 전화 번호부에 가면 다음보기 우리 프로젝트의 설치 당신은 작곡가 인 파일이 있습니다

제이슨과 여기 일련의 필수 라이브러리 파일 필수, 글쎄, 우리가 방금 완료 한 이 명령으로 추가하십시오 특히 Laravel 집단은 네가 할 수 있으면 좋았지 만 전에 좋으면 좋았을거야 콘솔에이 명령을 포함 시키십시오 나는이 파일을 열었을 것이다 당신은이 지시가 그리고 그때 그것은 지금입니다 음, 그 첫 번째 단계입니다

우리가 다음으로 한 일은 우리가 필요로하는 것은 공급자 제공 업체 이 디렉토리의 config 배열에 그럼이 명령은 너무 좋아 이걸 복사 해 봅시다 교수 config php 파일에서 라는 배열이 있다고 말합니다 공급자 제공 업체와 이걸 잘 추가하면 우리의 설치 디렉토리에 우리는 앱 폴더를 본다 죄송합니다 파일에 맞는 폴더에 PHP이게 우리를 나타내는거야

문서에서 우리는 이것을 여는 파일로 저장하고 이제는 문서에 이 배열 공급자를 찾고 추가합니다 이 좋은 코드 라인은 우리가 움직인다 조금 그리고 여기에 배열이 있습니다 제공자와 우리가하는 일은 add 마지막에 우리가 복사 한 줄 클립 보드에서 우리는 이 파일은 우리가 지시를 따른다 마침내 우리가 2 개의 클래스 레이 앨리어스의 별명들에 이것은 고정 pp pp와 이 두 가지 지시가 잘되어있다

우리는이 두 가지 제어 명령 EC 우리는 여기에 별명 배열을 찾습니다 우리는 그것들을 붙여 넣는다 끝에서 붙인다 우리는 변화를 간직한다 조금 더 내려다 보면서 그들은 우리가 루멘을 작동한다면 우리가 다른 지시를 따르도록 루멘은 아랍 그는 동생으로 간주됩니다 de arabel은 객관적이지 않기 때문에 좋다

그러나이 코스의 누군가 이것 좀 봐 문서이므로 여기를 클릭하십시오 루멘, 그가 여기 모습을 보았습니다 그들은 그 사람에 대한 경고를합니다 엄격한 비교 이 패키지에 사용 된 것은 무엇입니까? 가치를 전달할 때 중요하다

양식의 숫자와 그 다음 또한 무엇이 문서화 될 것인가? 다음 동영상에서 이미 보도록하겠습니다 그들은 양식을 만드는 법을 알려줍니다 여는 것은 html 양식 패키지와 잘 나가자 이 비디오는 우리가 우리는 다음 번에 그것을 발견합니다 우리는이 모든 것을 설치했다

우리는 함께 일하는 방법을 보게 될 것입니다 이 패키지를 잘 사용하는 양식 내가 너를 항상 초대했는지 말해 줄께 너는 다음에 계속 머물러있어 그때까지는 배달이 잘됩니다

How to Create a JavaScript Gantt Chart App Using PHP Laravel – DHTMLX Tutorial

안녕하세요, DHX 기술 지원 팀의 Ramil입니다이 동영상에서는 Laravel 프레임 워크를 사용하여 Gantt 차트 응용 프로그램을 쉽게 만들 수 있습니다

GitHub에서 데모를 준비하거나이 단계별 비디오 가이드를 따르십시오 이 비디오를 위해 여러분은 이미 PHP의 기초에 익숙하다고 가정합니다 'Composer'패키지 관리자뿐만 아니라 시스템에 설치하십시오 확실하지 않은 경우에 대한 소개 문서를 확인하십시오 Laravel 프레임 워크

모든 링크는 동영상 설명에 포함됩니다 이제`create-project` 명령을 사용하여 프로젝트 상용구를 생성 해 보겠습니다 필요한 파일을 모두 다운로드하여 만드는 데 1 분 정도 걸립니다 완료되면 모든 것이 올바른지 확인할 수 있습니다 이 단계에서 우리는 기본 Laravel 페이지를 얻습니다

괜찮아! 다음으로 Gantt 차트를 사용하여 새 페이지를 만듭니다 views 폴더로 이동하여 ganttbladephp라는 새보기를 작성하십시오 페이지에 Gantt 차트를 표시하는 데는 단지 3 단계 만 거쳐야합니다

새 페이지를 추가 한 후에는 브라우저에서 액세스 할 수 있도록해야합니다 이 튜토리얼에서는 Gantt를 앱의 기본 페이지로 만들 계획입니다 webphp로 가서 기본 경로를 'gantt'로 변경하십시오 우리가 지금 무엇을 가지고 있는지 확인합시다

그래서 빈 Gantt 차트가 있습니다 이제 Gantt가 모델을 사용하여 데이터베이스에서 데이터를 가져 오도록하겠습니다 이 비디오에서는 데이터베이스 용으로 MySQL을 사용하고 설치했다고 가정합니다 귀하의 시스템에 MySQL 서버에 새로운 데이터베이스를 생성해야합니다

녹음 할 때 PHP에 필요한 버전 8의 MySQL에는 몇 가지 문제가 있습니다 workarounds, 그래서 나는 MySQL 57을 사용하고있다 데이터베이스 서버가 실행 중인지 확인하면 'env'파일을 열고 연결 설정을 업데이트하십시오

여기서 방금 작성한 데이터베이스를 지정합니다 데이터베이스 사용자 및 암호를 설정하십시오 나머지 설정 값은 기본값과 잘 맞습니다 다음 단계는 모델 클래스와 마이그레이션을 생성하는 것입니다 Artisan 명령을 사용하여 클래스 및 마이그레이션 파일을 생성합니다

마이그레이션이 성공적으로 생성되었음을 알 수 있습니다 이제 마이그레이션 파일을 열어 보겠습니다 우리 작업과 링크에 대한 열을 지정하십시오 작업 테이블의 코드는 다음과 같습니다 그리고 링크 테이블의 코드는 다음과 같습니다

그것은 Gantt가 일하기 위해 요구되는 최소한의 것입니다 추가 데이터를 저장해야하는 경우 우리는 문제없이 모든 열을 추가 할 수 있습니다 이제 우리는 마이그레이션을 실행합니다 그 동안 우리 앱을위한 테스트 데이터를 생성 할 수 있습니다 artisan 명령을 사용하여 시드 자 클래스를 생성합니다

이제 TasksTableSeeder에 데이터를 추가합니다 데이터가로드되는지 확인하기 위해 몇 가지 작업을 추가했습니다 그리고 DatabaseSeederphp에서 테이블 시더를 호출하십시오 그런 다음 명령 줄에서 데이터베이스를 시드 할 수 있습니다

일단 데이터베이스가 생성되고 모델이 정의되면, 우리는 Gantt에 데이터를로드 할 수 있습니다 클라이언트 측에서는 JSON 형식의 데이터를 허용합니다 우리는 그것이 어떻게 작동 하는지를 알기 위해 간단한 컨트롤러를 만들 수 있습니다 클라이언트가이 작업을 호출 할 수 있도록 경로를 등록하십시오 api

php routes 파일에 경로를 추가합니다 마지막으로 'ganttload'메소드를 사용하여 뷰에서이 액션을 호출합니다 ganttload가 AJAX 요청을 보냅니다

지정된 URL에 JSON 응답을 기대할 것입니다 전에 정의 된 또한 xml_date 값을 지정했습니다 이것이 우리가 Gantt에게 데이터 소스가 사용할 날짜 형식을 알려주는 방식입니다 클라이언트 쪽에서 파싱 할 수 있습니다

응용 프로그램을 다시 시작하면 Gantt는 우리가 데이터베이스에 추가 한 작업을 표시해야합니다 기본적으로 작업 트리가 축소되어 있지만, 당신은 그것이 확대되기를 바랄 수도 있습니다 프로젝트 트리의 초기 상태는 공개 설정 클라이언트 쪽 Gantt 또는 서버에서 반환 된 데이터에서 가져옵니다 우리가 Laravel 통합을 다루고 있기 때문에, 후자로 진행해 보겠습니다 공식 문서에서, 우리는 작업의 초기 상태가 `open` 속성의 값

우리가이 값을 작업 모델에 저장하려고한다고 생각하지 않습니다 대신, 작업 클래스에 고정 값 속성을 추가 할 수 있습니다 응용 프로그램을 다시 실행하면 초기에 지점을 확장해야합니다 현재 Gantt는 백엔드에서 데이터를 읽을 수 있습니다 그러나 클라이언트에서 변경된 사항은 백엔드로 보내지거나 데이터베이스에 저장되지 않습니다

예를 들어, 여기에 새 작업을 추가 한 다음 페이지를 다시로드하면 그 작업이 사라진 것을 볼 수 있습니다 고쳐 주자! 이전 비디오에서 보았 듯이, 당신은 꽤 쉽게 클라이언트 측에서 업데이트를 가능하게 할 수 있습니다 지금 우리가 필요로하는 것은 작업과 링크 모두에 대한 작업을 처리하는 컨트롤러를 정의하는 것입니다 모델을 만들고 클라이언트의 경로를 만들고 클라이언트 측에서 데이터를 저장할 수 있습니다 컨트롤러부터 시작하겠습니다

각 모델에 대해 하나의 리소스 컨트롤러를 만듭니다 여기에는 모델을 추가, 삭제 및 업데이트하는 메소드가 포함됩니다 이 방법은 매우 간단합니다 클라이언트 측에서 작업 객체를 요청 매개 변수를 입력하면 모델 항목을 구성하여 저장 장치에 저장합니다 dhtmlxGantt에 특정한 몇 가지가 있습니다

"진행"값을 확인하고 요청이있는 경우 기본값을 0으로 지정합니다 매개 변수가 비어 있습니다 클라이언트 측 Gantt가이 열을 선택 사항으로 간주하고이 열을 선택적으로 간주하기 때문에이를 수행합니다 값이 클라이언트에 설정되지 않은 경우 백엔드 이 경우 기본값 대신 null 대신 0을 설정해야합니다

둘째, 응답 형식을 기록하십시오 action 매개 변수는 클라이언트 측에 조치 결과를 알려줍니다 클라이언트가 이해할 수있는 몇 가지 고정 값이 있습니다 이 경우 성공적으로 추가 된 항목에 대해 '삽입 됨'상태가 반환됩니다 그리고 새로운 데이터베이스 ID를 포함해야하는 "tid"매개 변수가 있습니다

목 실제로 응답과 함께 추가 정보를 클라이언트에게 보낼 수 있습니다 기본적으로 Gantt는이를 무시하지만 공용 API를 사용하여 Gantt에 액세스 할 수 있습니다 여기에는 "업데이트"및 "삭제"작업이 있습니다 그들은 거의 같은 방식으로 작동하므로 더 이상 확장하지 않을 것입니다

Gantt가 호출 할 수 있도록 새 컨트롤러의 경로를 추가하는 것을 잊지 마십시오 이제 LinkController에 대해서도 같은 것을 구현해 보겠습니다 우리가 방금 만든 작업 컨트롤러와 정확히 같기 때문에 너무 자세하게 설명하지 않겠습니다 구현 됨 : 여기서 새로운 링크를 생성하는`store` 메소드를 볼 수 있습니다 기존 항목의 변경 사항을 저장하는`update` 메소드와`destroy` 메소드는 그것과 거의 동일합니다

이전의 경우와 마찬가지로 경로를 추가하십시오 마지막으로 클라이언트 쪽에서 업데이트를 사용할 수 있습니다 우리가 이전 단계에서 모든 것을 올바르게 만들었다는 것을 감안할 때, 우리의 간트는 변화를 저장할 것입니다 방금 구현 한 컨트롤러를 사용합니다 앱을 다시 실행하고 확인해 보겠습니다

dev 도구를 보면, Gantt가 이제 서버를 호출해야합니다 내가 뭔가를 수정할 때마다 페이지를 새로 고침하면 모든 변경 사항은 유지됩니다 더 많은 것을 알고 싶다면 이전 비디오와 공식 문서를 볼 수 있습니다 Gantt가 사용하는 요청 형식

그리고이게 다야! Gantt 차트가 포함 된 간단한 Laravel 응용 프로그램을 만들었습니다 봉사해야하는 dhtmlxGantt를 사용하여 실험을 시작하십시오 동영상 설명에서이 자습서의 텍스트 버전에 대한 링크를 찾을 수 있습니다 완벽한 응용 프로그램과 함께 GitHub 저장소에 대한 링크입니다 다음 번에 짧은 동영상 시리즈를 계획하고 있습니다

Gantt API의 다른 부분 탐색 일반적으로 직면하는 일반적인 작업 실제 프로젝트에서 Gantt 사용하기 구성처럼 Gantt 차트에서 왼쪽 그리드의 댓글 섹션에서 내가 다루고 싶은 다른 주제를 알려주십시오 앞으로는! 관심과 비디오를 주셔서 감사합니다!

How to Deploy a Laravel App to Heroku with Database Setup?

안녕 얘들 아, 우리 채널에 오신 것을 환영합니다 오늘이 비디오에서 우리는 Herara에 Laravel 응용 프로그램을 배포 할 것입니다

플랫폼 Heroku는 여러 프로그래밍 언어를 지원하는 서비스로서의 클라우드 플랫폼입니다 그것은 우리가 응용 프로그램을 만들 수 있으며 원하는대로 정확하게 사용자 정의 할 수 있습니다 Heroku는 무료 사이트를 만들 수 있습니다 시작하면 정말 좋습니다

오늘이 비디오에서 우리는 Laravel 코드를 Heroku로 보냅니다 우리는 GitHub을 통해이 작업을 수행 할 수도 있고 직접 Heroku 팀에 참여할 수도 있습니다 따라서 머리를 움직이기 전에이 채널을 처음 사용하는 경우 빨간색 구독 버튼을 누르십시오 벨 아이콘을 누릅니다 따라서 다가올 비디오를 절대 놓칠 수 없습니다

당신이하고 싶은 첫 번째 일은 분명히 계속 진행하고 있습니다 Heroku 계정 나는 이미 나의 계정을 만들었고 나는 Heroku 대시 보드 안에있다 여기에서 이와 비슷한 것을 볼 수 있습니다 현재 앱이 없다는 것을 알 수 있습니다

Heroku를 통해하는 대부분의 작업은 대시 보드 내에서 제어 할 수 있지만 실제로는 커맨드 라인에서 많은 일을 할 것입니다 그래서 우리는 Heroku Toolbelt를 설치해야합니다 이 다운로드 및 설치 링크를 클릭하십시오 보시다시피이 방법은 모든 운영 체제에서 작동합니다 우분투를 사용하고 있는데 이미 설치했지만, Windows 또는 Mac을 사용하는 경우이 거의 똑같을 것입니다

여기이 페이지에는 모든 작동에 Heroku 툴 벨트를 설치하는 절차가 잘 설명되어 있습니다 체계 여기에서 Heroku 툴 벨트를 다운로드하여 시스템에 설치할 수 있습니다 Heroku Toolbelt를 설치했으면 다음 단계로 넘어 갑니 다 터미널에서 이제 첫 번째 단계는 Heroku 로그인을 실행하는 것입니다

Heroku 계정에 로그인하려면 Heroku 이메일과 비밀번호를 입력하라고 요청할 것입니다 나는 이미 Heroku 계정에 로그인되어 있습니다 그래서이 단계를 건너 뛸 수 있습니다 이제 신선한 Laravel 응용 프로그램을 만들려고합니다 현재 안정 버전은 5 점 7이므로 Laravel57로 이름을 정하십시오

cd Laravel57 다음으로이 Laravel 앱을 Heroku에 푸시합니다 그래서, 그 전에 우리는 Procfile을 만들 것입니다 명령 행에서 procfile을 터치하는 것만으로도이 작업을 수행 할 수 있습니다 새로운 파일을 생성하십시오

하지만 여기에는 전혀 확장이 없습니다 그냥 이렇게 보입니다 이 procfile에서 우리는 dynos에서 실행되는 응용 프로그램을 정의 할 것입니다 Dynos는 기본적으로 Heroku 내의 작은 컨테이너입니다 그래서 내가 할 일은 웹 서버와 내부에 어떤 종류의 웹 서버가 필요하다는 것입니다

내가 벤더 빈 Heroku PHP 아파치 두 말하고 싶습니다 또는 nginx 서버를 원하면 nginx라고 말할 수 있습니다 하지만 지금은 apache2를 사용할 것입니다 이것은 Heroku의 미리 정의 된 환경입니다 그리고 공개 디렉토리에서 실행해야합니다

이제 우리는 이것을 Heroku에 밀어 넣어야합니다 먼저 git init을 실행하여 빈 git 저장소를 초기화해야합니다 그리고 이것은 우리가 영웅과 함께 일하는 방식이기 때문에 매우 중요합니다 우리는 git을 사용하여 변경 사항을 적용하고이를 Heroku에 전달합니다 그리고 우리의 응용 프로그램을 배포 할 것입니다

자, 우리의 모든 변화를 저버 렸습니다 자식 추가 git commit -m "초기 릴리스" 이제 우리가 헤로쿠에 어떻게 밀어 넣을 지 우리가 Heroku 계기판에서 볼 수 있다면, 여기에는 앱이 없습니다 그래서, 우리의 다음 단계는 Heorku에 새로운 APP를 만드는 것입니다

그래서, 터미널에서, 우리 프로젝트 안에 우리가 달릴거야 Heroku가 만듭니다 이것은 우리를위한 새로운 APP를 만들 것입니다 그리고 당신은 볼 수 있습니다, 이것은 단지 우리에게 임의의 이름을줍니다

대시 보드에 들어가서 새로 고침하면이 애플리케이션을 사용할 수 있습니다 거기에 이것을 클릭하십시오 필요한 경우 관리 할 수 ​​있습니다 Heroku create 명령은 git 원격 URL도 추가합니다

우리는 실행, git remote -v 여기있어 그래서이 Laravel 앱을 Heroku에 밀어 넣으십시오 우리는 달릴 수있다 git push heroku master

여기서 많은 출력을 볼 수 있습니다 기본적으로 Heroku는 앱 설치를 위해 이러한 모든 작업을 수행하며 볼 수 있습니다 여기 모든 우리의 작곡가 의존성의 원격 설치가 일어나고있다 그래서 우리는 몇 초 더 기다립니다 이제 우리는 실제로 Heroku에 코드를 배포했습니다

Heroku 대시 보드를 살펴 보겠습니다 차이가 무엇인지 알기 만하면됩니다 새롭게 하다 그리고 우리는 dyno 형성 아래서, 우리가 웹을 가지고 있다는 것을보아야합니다 자, 우리가 가서 APP를 열면

500 오류가 있습니다 Laravel 앱의 Heroku에 환경 변수가 설정되어 있지 않기 때문입니다 예를 들어 앱 키 이 설정은 일반적으로 설정에서 찾을 수 있으며 reveal config vars를 클릭 할 수 있습니다 그래서 여기에서 설정 변수를 추가 할 것입니다

당신은 열쇠와 가치가 있습니다 먼저 APP_DEBUG를 추가합니다 이제 우리는 다시 돌아와이 페이지를 새로 고칩니다 이제 애플리케이션 암호화 키가 지정되지 않았습니다 오류

자, 앱 키를 추가합시다 이 페이지를 새로 고침하십시오 끝났다 이제는 효과가 있습니다 다른 환경 변수도 추가합시다

Heroku 구성을 사용하여 명령 행에서 직접 환경 변수를 추가 할 수도 있습니다 추가 한 다음 키와 값을 제공하십시오 우리의 경우, APP_NAME Larave APP_ENV, 나는 그것을 생산이라고 말할 것이다 다음 APP_URL, 우리의 응용 프로그램 URL이 이것입니다 다음으로, 변수는 데이터베이스 연결을위한 것입니다

그러나 우리는 아직 Heroku에서 데이터베이스를 구성하지 않았습니다 그래서, 구성된 데이터베이스 수 있습니다 그래서, Heroku 대시 보드에서 우리는 자원으로 갈 것입니다 새 데이터베이스를 추가하려면 여기에서이 addon을 사용합니다 탐색 할 수있는 많은 부가 기능이 있습니다

여기서 우리는 Postgres를 검색 할 것입니다 우리는 Heroku Postgres를 볼 수 있습니다 이것을 클릭하십시오 당신은 여기에 우리가 무료로 취미 계획을 가지고 볼 수 있습니다 원하는 경우 물론 업그레이드 할 수 있습니다

지금은 무료로 작업하고 있습니다 자, 이것을 제공 할 수있게하십시오 잠시 후에 우리가 사용할 준비가 될 것입니다 그런 다음 여기를 클릭하여 Postgres 자격 증명을 얻을 수 있습니다 또는 명령 줄에서 실행할 수 있습니다

heroku pg : credentials : url 여기에는 데이터베이스 이름, 호스트, 포트, 사용자 이름 및 암호가 있습니다 그리고 이것을 환경 설정 변수에 설정할 것입니다 이제 DB 연결을 추가합니다 Heroku 구성 : db_connection을 추가하면 pgsql입니다 왜냐하면 우리는 Postgres SQL을 사용하기 때문입니다

다음으로 DB 호스트를 추가하고, 여기에서 복사하십시오 마찬가지로 DB 포트를 추가합니다 이 하나 다음 DB 데이터베이스 다음으로 DB 사용자 이름이 필요합니다 그리고 마지막으로 db 암호를 추가 할 것입니다

Heroku 설정 페이지에서 설정 변수를 볼 수 있습니다 그리고 커맨드 라인에서 추가 한 설정이 여기에 있음을 알 수 있습니다 이 중 하나를 수정해야하는 경우 여기에서 수정할 수 있습니다 이제 모든 데이터베이스 자격 증명을 설정했습니다 다음으로 Artisan Migrate 명령을 실행하여 Heroku Postgres 데이터베이스에 테이블을 생성해야합니다

이 작업에는 몇 가지 방법이 있습니다 우리는 말할 수있다, 우리가 달리고 싶은 모든 명령을 달아 주었다 우리의 경우, 우리는 php artisan migrate라고 말할 수 있습니다 아니면 우리가 말할 수있는, Heroku 실행 bash는 이것이 무엇을 할 것인가 Heroku 서버의 명령 줄에 우리를 넣을 것입니다

그래서 여기에 나와 있으면 Larave 응용 프로그램 파일을 볼 수 있습니다 당신이 명령을 많이 실행하는 경우, 당신은 Heroku 실행 bash를 실행할 수 있습니다 그러나 단 한 명령만으로도 매우 쉽습니다 우리는 단지 당신이 달리기를 원하는대로 헤로 쿠를 운영합니다 여기서 우리는 말할 것이다

Heroku는 php artisan migrate를 실행합니다 그것은 데이터베이스에 테이블을 만들었습니다 이제 Laravel 앱으로 테스트 해 보겠습니다 PHP 장인 확인 : 인증 Laravel 응용 프로그램에서 인증 시스템을위한 일반적인 스캐 폴딩을 생성합니다 인증 스 캐 폴딩이 생성되었습니다

git status, 이것은 일반적인 untrack의 상태를 알려준다 파일 다음으로이 파일을 커밋 해보자 git add, git commit -m "authentication" 이걸 헤로 쿠에 밀어 넣자 git push heroku master

이제 Laravel 응용 프로그램이 배포되었습니다 자, 시험해 봅시다 브라우저에서이 페이지를 새로 고침하십시오 여기에 로그인과 등록 링크가 있습니다 이제 새로운 계정을 등록하고 어떤 일이 일어나는지 보도록하겠습니다

예를 들어 Harish, Harish 암호 그냥 정상적으로 작동합니다 그리고 그것은 꽤 많이 있습니다 이제 Laravel 응용 프로그램을 배포하고 데이터베이스를 설치하고 구성 변수를 추가하는 방법을 알았습니다 Heroku에서 또한 Heroku를 사용하여 명령을 실행하는 방법도 알고 있습니다

튜토리얼이 마음에 드시면 버튼을 누르세요이 동영상을 공유하고 구독하는 것을 잊지 마세요 우리 다음 곧 출시 될 비디오에서 곧 만나요

Laravel Package Development – e02 – Getting started with PHPUnit, Composer and PSR4 Autoloading

좋아, 시작하자 그래서 우리는 프로젝트 이름이 언론에 있음을 알고있다

그래서 디렉토리를 만들고 그것을 Press라는 이름으로 만들어 봅시다 그 디렉토리로 바꾸자 이제 'git init'명령에 익숙 할 수도 있지만 그 사실을 알지 못할 수도 있습니다 composer에는 init 명령이 있으며이 명령을 실행하면 실제로 아주 기본적인 composerjson 설정을 만드는 과정을 안내합니다

파일 자, 내 공급 업체가 vicgonvt이고 패키지 이름은 언론입니다 설명에서, 설명을 쓰자 완전한! 작성자가 맞아요 들어가기 만하면됩니다

최소 안정성, 그 비워 두자 패키지 유형에서는 해당 입력란을 비워 둡니다 에 대한 라이센스를 얻으려면 여기에 적절한 라이센스를 입력하십시오 제 경우에는 MIT를 입을 것입니다 'composer init'을 사용하면 대화 형으로 종속성을 요구할 수 있습니다

지금, 우리는 이런 식으로하지 않을 것이지만 당신은 할 수 있습니다 그래서, 마침내 당신에게 우리가 한 일을 미리보고 확인하기 위해 enter를 누르십시오 자, PHPStorm에서 이 composerjson 파일을 살펴보고 이름, 설명, 라이센스 및 저자가 있으며 현재로서는 필요한 패키지가 없습니다 그걸 시작합시다

터미널로 돌아가서 우리는 'composer require – -dev orchestra / testbench' 지금, 테스트 벤치 실제로 가져올 것입니다 Laravel 프로젝트에서 익숙한 동일한 환경에서 그것은 우리가 당신과 같은 방식으로 패키지를 개발할 수있게 해줄 것입니다 일반 Laravel 응용 프로그램입니다 이제 여기로 돌아가고 싶습니다 당신에게 패키지의 일부를 가져옵니다 무엇보다도 Laravel 프레임 워크, 익숙한 다른 패키지는이 심포니 중 일부입니다 PHPUnit뿐 아니라 컴포넌트도 제공합니다

이제 설치가 끝났으니 가자 앞으로 git 저장소를 초기화하십시오 'git init'그리고 우리는 비어있다 저장소 '자식 상태'우리는 여기에 몇 가지 디렉토리가 있습니다 자, 너는 그렇지 않을 수도있다

벤더 디렉토리와 'idea'디렉토리를 보는 데 익숙하다 이것은 Laravel이 실제로 아주 좋은 'gitignore'와 함께 배송되기 때문입니다 지금, 'git ignore'파일은 실제로 git에게 특정 디렉토리 나 파일을 무시하도록 지시합니다 버전 제어가 필요하지 않기 때문에이 작업을 수행합니다

소지품 벤더 디렉토리와 마찬가지로, 작곡가와 'idea'디렉토리, 필자의 경우 PHPStorm 파일이므로 필요하지 않습니다 소스 컨트롤 내부 Laravel GitHub 페이지를 방문하여 그 자식은 파일을 무시합니다 이제이 파일을 보면 '

idea'와 ' 납품업자 및 다른 2 개의 전화 번호부 여기에서 그래서 나가 실제로하고 싶은 무엇을 이 전체 파일을 프로젝트에 가져 오십시오 나는 모든 것을 선택할거야 그것을 복사하여 PHPStorm로 다시 전환하고 새 파일을 만듭니다 새로운 파일 이 파일의 이름을 '

gitignore'로 지정하면 붙여 넣기 만하면됩니다 in 'Save', 'git status'그리고 거기서 우리는 파일들이 완성되어 우리가 먼저 'git add'를 커밋하십시오 '자식 커밋 -m 초기 커밋'완벽한 우리는 커다란 진전을 이루고 있습니다 디렉토리 구조 이것은 약간되는 주제 중 하나입니다

확실하지 않기 때문에 패키지 개발을 시작할 때 복잡해집니다 어디서 파일을 두지 만 안심해도됩니다 쉬운 접근법이 있습니다 우리가 취할 접근법은 정확히 똑같은 디렉토리를 사용하는 것입니다 우리 Laravel 패키지에서 익숙한 구조

다시 가자 한 번 더 Laravel GitHub 페이지를 방문하여 디렉토리 구조를 살펴보십시오 그래서 우리는 응용 프로그램 디렉토리, 부트 스트랩, 설정, 경로, 저장소, 테스트 등을 가지고 있습니다 기타 등등 이 똑같은 디렉토리 구조를 예외가 아니라 앱 디렉토리 대신 실제로 'src'라고 부릅니다

근원을 나타냅니다 패키지 커뮤니티에서는 모든 사람들이 기본 디렉토리는 'src'이어야하므로 해당 규칙을 따르게됩니다 와 다시 말하면 우리 터미널로 돌아가서 디렉토리 'src'디렉토리를 만들고 두 개의 디렉토리를 만들자 우리의 테스트

테스트 파일로 시작하면 내부에서 테스트 기능 테스트 그리고 우리는 단위 테스트를 할 것입니다 PHPStorm에서 테스트 디렉토리와 소스를 살펴볼 수 있습니다 그것은이 시점에서 물론 비어 있습니다 이제 우리가 활용하지 못하는 한 가지 방금 자동 로딩이되었으므로 작곡가 인 json 파일로 돌아가 봅시다 몇 가지 항목을 추가하십시오

첫 번째 것은 '자동로드'입니다 우리는 psr-4에서이 작업을 수행 할 것입니다 우리가 알아야 할 첫 번째 것은 우리 네임 스페이스가 될 것입니다 내 사건 'vicgonvt \ 언론 \'그리고 우리는 또한 그것을 말해야 만 메인 항목 point는 우리의 경우에 'src'디렉토리 인 네임 스페이스를위한 것입니다 우리의 테스트를 자동로드하므로, 우리는 'autoload-dev'라는 항목을 추가 할 것입니다

또한 psr-4와 약간 다른 네임 스페이스 'vicgonvt \ press \ tests \'그래서, 그 진입 점은 어디입니까? 글쎄, 그건 우리의 테스트 디렉토리에 있어야하고 그게 전부입니다! 이 시점에서 우리는 자동 로딩을하고 있습니다 PHPUnit을 실행할 준비가되었습니다 테스트 해 봅시다 'phpunit'와 오우 소년! 그것은 계획대로 가지 않았습니다! 권리? 우리는 'phpunit'을 실행하는 데 익숙하며 PHPUnit만으로도 작동합니다

실제로 많은 옵션이 있습니다 이제는 이러한 옵션을 볼 수없는 이유가 왜냐하면 Laravel은 실제로 PHPUnit에게 무엇을 지시하는 작은 파일을 가지고 있기 때문입니다 해야 할 것 그 파일을 살펴 봅시다 GitHub 저장소로 돌아 가면 다음 위치에 파일이 있습니다

여기에 'phpunitxml'이 있는데, 우리가 열면 실제로 모든 옵션이 보입니다 여기에는 유닛 테스트 스위트와 기능 테스트 스위트가 포함되어 있습니다 'gitignore'와 동일합니다

실제로 프로젝트 전체에이 전체 파일을 가져와 봅시다 나는 갈거야 새 파일을 만들고 난 그것을 'phpunitxml'이라고 부를거야 PHPUnit은 실제로 이 파일을 찾을거야

'phpunit'을 실행할 때, 붙여 넣기하자 이 파일을 살펴볼 수는 있지만 기본적으로이 파일은 모두 옵션을 선택하면 테스트 스위트 섹션이 생성 된 다음 어떤 파일이 실제로 테스트 될지 그리고 마지막으로 우리는 환경 파일 우리는 지금 이것을 필요로하지 않기 때문에 실제로 지울 것입니다 그들과 당신이 변경해야 할 유일한 다른 것은 app 디렉토리 대신에있다 그것은 우리의 'src'디렉토리가 될 것입니다

저장을 클릭하고 iTerm으로 다시 전환하고 한 번 더 'phpunit'을 실행하면 테스트가 실행됩니다 마지막 하나 내가하고 싶은 일은, 우리가 할 수있는 아주 간단한 테스트를 작성하는 것입니다 정말로 뭔가 테스트 그래서 저는 새로운 PHP 클래스를 만들겠습니다 우리는 그것을 호출 할 것입니다

초기 테스트, 내 네임 스페이스 'vicgonvt Press Tests' 당신은 단순히 'php artisan make : tests'를 실행하는 데 익숙 할 수 있습니다 처음부터 테스트를 설정하는 데 사용되었지만 알아 두어야 할 것은 모든 테스트가 테스트 케이스를 확장한다는 것, 이제 Laravel의 경우에는 일반적으로 Laravel 프레임 워크의 테스트 사례를 확장하지만 패키지를 개발할 때 우리는 실제로 테스트 케이스를 확장해야합니다 오케스트라 테스트 벤치에서 여기에 전체 네임 스페이스는 'orchestra testbench testcase'이므로 여기까지 불러 들여 첫 번째 간단한 테스트를 작성해 보겠습니다 내가 여기서주의하기를 원하는 것은 당신이 사용하는 모든 주장을 우리가 어떻게 가지고 있는지입니다 이미보고 있기 때문에, 우리는 단순히 진실을 주장하고 진실을 말하고 물론, 그것은 지나갈 것입니다

iTerm으로 돌아가서 'phpunit'을 한 번 더 실행 해 보겠습니다 시간이 지나면 우리는 녹색 테스트를 받게됩니다

Laravel Package Development – e01 – Introduction

안녕하세요 환영합니다

이 과정에서 Laravel 패키지에 대해 이야기 할 것입니다 개발 시작하기 전에 계획에 대해 조금 이야기하고 싶습니다 우리의 접근 방법과 패키지를 개발할 수있는 몇 가지 이유가 있습니다 자, 시작하겠습니다

계획대로 나는 마크 다운 기반의 블로그를 만들 생각을 가지고 있으며 그것을 누르십시오 이제 내가 개발하고 싶은 기능 중 하나는 드라이버 기반 접근 방식으로 파일, 데이터베이스, 심지어는 GitHub Gist를 가질 수 있기를 원합니다 드라이버를 사용하면 단일 블로그에 여러 기여자를 지정할 수 있습니다 이제는 테마를 사용자 정의 할 수있을뿐만 아니라 뷰와 그것은 우리 계획의 일부입니다

우리는 몇 가지 더 많은 것을 추가 할 것입니다 가서 패키지를 만들 수있는 이유에 대해 이야기 해 봅시다 하나 들어, 재사용 성 그것은 우리가 이야기 할 주제 중 하나입니다 우리가 재사용 할 수 있지만 정직하게 말할 수있는 객체 지향 프로그래밍 때로는 논리의 일부가 프로젝트의 특정 도메인에 의해 오염 될 수 있습니다

그 재사용 성은 창 밖으로 나간다 확장 성은 그 중 하나입니다 말 확장 성은 테마를 맞춤 설정할 수 있음을 의미합니다 다른 프로젝트에서 사용할 수 있어야합니다

사용자 정의보기 및 이 패키지를 여러 다른 장소에서 사용할 수 있습니다 또 다른 이유는 단순한 '작곡가 필요'와의 통합 용이성입니다 이 기본적인 블로그를 모든 프로젝트에 가져올 수있게되고 마침내 우리는 특정 프로젝트의 도메인 및 / 또는 논리 이 프로젝트가되지 않을 것이라는 의미 다른 프로젝트의 도메인과 그 프로젝트에 특정한 논리에 의해 오염되었습니다 재사용 가능하고 확장 가능하며 통합하기 쉽습니다

마지막으로, 이 과정의 요구 사항 네가 현대에 있다고 가정 할거야 Laravel 프레임 워크에 대한 이해 너는 서비스와 같은 것이 무엇인지를 안다 공급자, 구성 파일 및 마이그레이션이 있으며 또한 테스트 주도 개발은 PHPUnit과 Laravel의 모든 테스트 도우미

그러나 결국, 이 과정이 끝나면 우리는 완전히 기능하는 블로그를 갖게 될 것입니다 우리가 현대를 해부 할 때 저와 함께 올 것입니다 패키지 개발 환경

Laravel Package Development – e03 – Markdown Review

우리 프로젝트에서, 우리는 마크 다운을 사용할거야 그래서 나는 한 두 사람을 데려 가고 싶어

몇 분 내에 markdown의 기본 사항을 검토하십시오 이제, 당신은 이미 markdown에 익숙하기 때문에 진행 중이면 건너 뛸 수 있습니다 너라면 여전히 주위를 살펴 보도록하겠습니다 h1 제목의 경우 파운드를 사용합니다 그런 다음 표제 텍스트를 작성하고 생성 된 HTML을 살펴 본다면 h1을 본 다음 텍스트와 닫는 태그를 봅니다

h2의 경우 2 파운드를 사용합니다 '또 다른 헤딩'과 확실하게, 우리는 h2와 우리의 표제어를 얻습니다 h3의 경우, 3 파운드, '또 다른 표제'를 사용하고 HTML을 보면 h3 참조 나는 당신이 요점을 얻은다고 생각합니다 당신이 할 수있는 또 다른 일은 순서가없는 목록

이제는 플러스 기호를 사용하고 항목을 사용하십시오 그래서, 우리는 + 항목 1, + 항목 2, + 항목 3을 보게 될 것입니다 정렬되지 않은 목록과 세 가지 목록 항목 이탤릭체는 어때? 너를 해줄거야 별표를 사용하십시오

따라서 별표 하나를 시작하고 별표 하나 여기서 끝내기를 원하는 곳에서 항목 1이 기울임 꼴로 표시됩니다 대담한 내용의 경우 두 개의 별표를 사용하여 동일한 작업을 수행합니다 따라서 하나, 둘, 시작과 하나, 둘, 멈추고 거기에 우리가 간다 항목 2는 굵게 표시됩니다 자, 너 대담하고 이탤릭체로 표시하고 싶을 수도 있습니다

3을 사용하십시오 하나 둘 3 및 1 2 3 그리고 우리가 간다 항목 3은 대담하고 이탤릭체 다음에 내가 보여주고 싶은 것은 블록 쿼트 (blockquote)입니다

시작하려면 blockquote, 당신은 간단하게 기호보다 큰 다음 귀하의 견적을 넣어 길 실제로 보이는 것은 파서마다 다르지만 생성 된 HTML은 항상 동일합니다 코드 블록은 어떻습니까? 정말 멋지다 markdown의 특징 코드 블록을 시작하려면 3 개의 틱을 사용합니다

탭 위에있는 키를 누른 다음 어떤 언어를 지정할 수도 있습니다 우리는 PHP를 사용하는 예제에서 그렇게 사용하게 될 것입니다 자, 시작하자 여기에 코드 블록 우리는 PHP 변수를 말할 것입니다

차가운 다음 코드 블록을 끝내려면 세 번 틱을 다시 추가하십시오 걸릴 저것 봐 와우! 저것 봐, 우리는 심지어 문법을 가지고있다 강조 표시! 꽤 괜찮은데 이제, 우리는 언어

우리는 언어를 지정하지 않고 단지 일반을 생성 할뿐입니다 코드 블록하지만 그것은 멋진 기능이므로 PHP를 다시 넣을 것입니다 더 멋진 구문 강조 표시가 나타납니다 이 테스트에서는 parsedownorg를 사용했습니다

이것은 실제로 우리가 사용하게 될 패키지입니다 가격 인하 파서는 Laravel 프레임 워크에서 실제로 사용됩니다 즉, 우리는 추가 패키지를 가져오고 이미 내부에있는 것보다 벤더 디렉토리 이제 마크 다운에 대해 알아야 할 것이 많지만 매우 기초가 기본적으로이 전체 과정을 통해 우리를 얻을 것이다

Laravel Package Development – e04 – Markdown Parser

이전 수업을 건너 뛰면 괜찮습니다 당신이 놓친 유일한 것은 우리가 사용할 패키지입니다

가격 인하 '파서 다운 (parsedown)'이라고 불리우며 지금 바로 웹 사이트를 방문하십시오 parsedownorg에 방문한 다음 GitHub을 클릭하면 GitHub로 이동합니다 repo

자, 이것은 매우 간단한 패키지입니다 우리는 작곡가와 함께 할 것입니다 그것을 필요로하고 그것을 사용하려면, 우리가해야 할 일은 새로운 파서 다운을 인스턴스화하는 것입니다 () 클래스를 호출하고 텍스트 메서드를 호출하면 지금 시도해 보겠습니다 'composer require erusev / parsedown'phpstorm으로 돌아가서 여기에 초기 테스트가 있습니다 종종 나는 시험을 치고 단지 실험을 작성하여 내가 어디로 갈지를 볼 것입니다

하지만이 경우에는 이름을 바꿀 것이라는 것을 알고 있으므로 계속 진행할 것입니다 지금해라 이름 바꾸기 및 우리는 그것을 markdown 테스트라고 부를거야 수업 이름을 바꾸고,이 시험을 지우고 다시 시작하십시오 새로운 테스트에서 나는 확실하지 않다

이 시험은 아직 할 일 이니, 그냥 시험이라 부를거야 하자 이제 parsedown ()을 인스턴스화하십시오 parsedown은 새로운 parsedown과 같습니다 이제는 기본 네임 스페이스에 있기 때문에이 파일을 가져와야합니다 여기 상단의 parsedown을 사용하면 우리가해야 할 일은 parsedown을 호출하는 것입니다

우리는 텍스트 메소드를 호출 할 것이고 문자열을 전달할 것입니다 제목을 계속 지키자, 파운드 표제 '실험'을 복사하고 뒤로 이동합니다 iTerm, 'phpunit – filter 실험'에 이르기까지 우리는 텍스트를 h1 그리고 나서 또 다른 h1 닫는 태그 굉장해! 그래서 내가 실제로하고 싶은 것은, 파 클래스를 자신의 클래스로 추출하면 그 이유는 내가 가고 싶다

앞으로 파서 다운을 우리가 통제 할 수있는 클래스로 캡슐화하십시오 미래, 나는 내가 사용하고있는 패키지를 변경하기로 결정한다 논리 이제는 소스 코드에서 새로운 PHP 클래스를 만들어 보겠습니다 MarkdownParser라고 부릅니다

네임 스페이스 'vicgonvt press'가 이제 내 테스트로 돌아와서 어떻게 상호 작용하고 싶은지보고 싶습니다 이 새로운 클래스 이상적으로 필자는 markdown 파서를 호출하고 구문 분석을 호출 할 수 있습니다 메서드를 호출하고 문자열을 전달합니다 그래서 여기에 같은 문자열을 전달합시다

이것은 희망찬 프로그래밍이며, 이것은 존재하지 않습니다 아직, 그 일을 만들어 봅시다 내 마더 다운 파서 수업에서 새로운 공공 정적 함수와 나는 그것을 파스라고 부를 것이다 이제 나는 그것이있을 거라는 걸 안다 문자열을 받아 들여 parsedown을 인스턴스화하는 코드를 복제하겠습니다

파서 다운이 새로운 파산과 같아서 파칠 다운을 반환 할 예정입니다 해당 텍스트 메서드를 다시 한 번 해당 문자열 변수를 전달합니다 하자 우리 시험으로 돌아가서 내가 죽고 여기서 바로 내 버릴거야 나는 지울거야 그 밖의 모든 것, 우리는 우리가 무엇을 되 찾을 지 정확히 알 수 있습니다

iTerm 한 번 더 '실험'을 실행하고 거기서 우리는 정확한 같은 결과 이제이 구현에는 약간의 차이가 있습니다 다시 파서 다운 패키지가 내 안에 캡슐화되고있다 markdown 파서 그래서 나는 항상 정적 파싱 메서드를 호출 할 수있을 것이다 내가 실제로 필요한 마크 다운 패키지에 관계없이 언제나 필요한 것을 되 찾을 수 있습니다

사용 몇 가지 주장을 써서이 공과를 끝내자 이 주장 우리가 이걸 다시 되 찾을 것을 기대하고 있습니다 나는 그것을 복사 할 것입니다 그것을 가져 오면 내 markdown 파서 클래스를 호출하면 일어날거야

거기에있는 parse 메소드를 호출하십시오 이제 실험의 이름을 실험에서 실험으로 바꾸어 봅시다 좀 더 의미있는 것 나는 간단한 markdown이 파싱된다고 말할 것이다 괜찮아! 그 테스트 'phpunit – – filter MarkdownTest'를 실행 해보자

지금은 마크 다운을 분석 중입니다 더 많은 분, 이걸 정리할 아주 빠른 리팩토링을 보여주고 싶습니다 두 줄에서 한 줄까지 그래서 여기에 내가하고 싶은, 파서 다운 실제로 정적으로 호출 할 수 있습니다 이렇게 파서 다운하면 호출 할 수 있습니다

인스턴스를 사용하면 파싱 된 인스턴스가 반환됩니다 우리는 텍스트 메서드를 호출 할 수 있습니다 그리고 거기에 우리가 간다 그래서 우리는 이것을 실제로 전달할 수 있습니다 스트링을 똑바로 훑어 본 다음이 모든 것을 반환한다면 바로 그 것입니다

이 실제로 똑같은 일을 할 것이지만 훨씬 더 깨끗합니다 가자 iTerm으로 돌아가서 테스트를 한 번만 더 실행하면됩니다 녹색

Laravel Package Development – e06 – Parsing the Head Fields

그래서, 지금까지 우리는이 에피소드에서 머리를 몸에서 분리 할 수있었습니다 우린 머리에 집중할거야

그럼, 간단한 테스트를 작성해 보겠습니다 그것을 통해 자신의 길을 안내합니다 우리의 PressFileParserTest에서 맨 아래에 새로운 테스트와이 테스트는 "각 헤드 필드가 분리됩니다"그리고 나는 이것으로 말하면, 우리는 콜론과 그 다음에 "내 제목"이라는 제목이 있습니다 이상적으로 내가보고 싶은 것은 배열이 어디에 제목이 열쇠이며 그것이 동일합니다 "내 제목"으로

그래서, 우리는 이것으로 시작하고 그것은 우리의 마크 파일에서 오는 것입니다 바로 여기에 그래서 우리는 이것으로 시작하고 우리는 이것을 원합니다 그럼 그걸 만들어 봅시다 우연히 있다! 우리 시험을 채우자

나는 이전 시험에서 이것을 얻을 것이다 셋업은 기본적으로 같을 것이고, 나는 몇 가지 단언을하고 싶다 "$ this 우리가 찾고있는 것은 "내 제목"이며, 우리는 그것을 얻고 싶습니다 우리는 핵심 "제목"을 얻습니다 마찬가지로, 우리는 "설명을"여기에서 얻고 싶습니다

우리는 핵심 "설명"을 얻습니다 자, 우리 시험을 치자 "undefined index title"물론! 우리는 그것을 만들기 위해 작성된 코드가 없습니다 작업 PressFileParser를 열자

그래서, 우리가 추가해야 할 것처럼 보입니다 여기에 새로운 단계가 있으며이 단계를 'explodeData ()'라고합니다 본질적으로 우리가 할 일은 우리가이 끈을 잡을 때 키 값 배열로 분리 이 방법을 구현해 보겠습니다 "보호 된"및 일하러 가자

무엇보다 먼저, 우리가 $이 데이터가 있습니다 권리? $이 데이터는이 단계에서 반환 된 데이터입니다 "preg_match ()"배열을 확인해보고 배열에 관심이 있으니 이 첫 번째 열쇠는 여기에 있습니다 권리? 우리는 머리만으로 작업하고 있기 때문에 조금만 더 좁히고, 다시 테스트 해 봅시다 좋아, 그래서 우리는 새로운 라인부터 시작하여 새로운 라인으로 끝납니다

그래서 무엇이 그것을 손질하는 가장 쉬운 방법은, 음, "trim"하십시오 "trim ()"그게 뭔지 보자 않습니다 좋아요, 이제 두 줄이 분리되었습니다 새 줄을 써서이 단계에서 몇 가지 단계를 밟을 수는 있지만 생각합니다

우리가 필요로하는 가장 빠른 길은 새로운 라인에서 폭발하는 것입니다 자, 너는 작은 따옴표를 사용하고 새로운 라인을 말하기 위해 여기에 유혹을 받지만 이것은 이것들 중 하나이다 작은 따옴표와 큰 따옴표 사이의 미묘한 차이 작은 따옴표 새로운 공간을 만들지는 않을 것이지만 문자 그대로 만들 것입니다 "백 슬래시 n"을 해석하고 새로운 라인으로 만드십시오

나는 실제로 내가 그저하는 일을 보여주고 싶기 때문에 그렇게 두십시오 그리고 너 거기에있어 가기! 작동하지 않습니다 이제 간단히 작은 따옴표로 변경하십시오 큰 따옴표를 붙이고 다시 실행하십시오 그것은 약간 다릅니다 이제 우리는 각 행을 포함하는 배열 효과적으로 머리를 분리했습니다

라인으로 다음 논리적 인 단계는이 라인들 각각을 반복하는 것입니다 추가로 분리하십시오 그래서 여기에 foreach 루프를 작성합니다 나는 우리가 가지고있는 것을 지나갈 것이고, 우리는 "끈"으로 말할 것입니다

필드 문자열이라고 부르는 이유는 문자열이기 때문입니다 "필드 문자열"을 보여 드리겠습니다 나는 "죽고 덤프"필드 문자열을 실행하고 내 한번 더 시험해 보시고 거기 가세요! 그래서, 우리는 간단한 문자열을 가지고 있습니다 우리가 필요로하는 모든 것 우리는 여전히 이것을 더욱 조종 할 필요가 있습니다

이 문제를 Chrome에 다시 가져 와서 정규 표현식을 사용해 보겠습니다 그래서, "title : my title"이제는 정규 접근 방식에 대해 무엇을 쓸지 모르겠지만 쉬운 접근법입니다 표현은, 나는 큰 조각부터 시작한다 나는 하나의 포획을 원한다는 것을 안다 이 그룹과이를위한 하나의 캡처 그룹

자, 두 가지 캡처로 시작해 보겠습니다 여러 떼 좋아, 이제 우리가 뭘 더 알지? 글쎄, 우리는 그들 사이에 콜론과 공백을 사용하여 콜론을 만든 다음 "백 슬래시 s"를 사용하면 공간 좋아 그럼 내가 여기서 모든 걸 다 여기 있고 모든 것을 예외 없음

그래서 한 마침표와 별표가 우리에게줍니다 그 다음 다른 기간과 별표 이제 우리가 결과 배열, 우리는 키 하나에, 우리는 "제목"이 있고 키 2에 "내 title "나는 하나를 더 추가하고 싶습니다 약간 다른 경우입니다 여기에 우리가 그것을 덮고있다

공간이 없다면 어떨까요? 그래서, 이 글쎄, 우리는 그것이 작동하지 않는 것을 본다 왜냐하면 그것은 우리가 공백은 여기에 있지만 정규식에는 단순히 물음표를 추가하면됩니다 무언가를 선택 사항으로 만들면 두 가지 경우 모두 실행 중임을 알 수 있습니다 정확히

그럼, 저걸 붙잡고 다시 가져 오도록합시다 PHPStorm 우리는 여기서 "preg_match ()"메소드를 찾고 있습니다 그리고 우리가 일치하는 데 사용할 패턴은 그 패턴이 될 것입니다 우리가 방금 가져온 것

이제 우리는 우리가 맞춰야 할 것이 필요합니다 필드 문자열이 될 것이며 세 번째 매개 변수로 일치 항목이 필요한 부분을 찾을 수 있습니다 끝날거야 "필드 배열"이라고합시다 말이 돼? 그래서, "preg_match ()"이 정규식을 사용하여 "preg matching"합니다

우리는 "필드 문자열"을 입력으로 사용하고 "필드 배열"을 산출 "필드 배열"을 "죽이고 덤프"하자 그래서 우리는 우리가 무엇인지 볼 수 있습니다 돌아 오는 중 좋아, 잘 됐네! 중요한 것은 "title"과 key two는 우리 텍스트를 가지고 있습니다

마지막 단계는 결과를 다시 저장하는 것입니다 이 데이터 $,이 데이터 $ 및 $를 기억하십시오이 데이터는 배열이므로 우리는 대괄호를 사용하고 키로이 요소를 원한다는 것을 기억하십시오 그래서, 요소 키 번호 하나에 필드 배열 키 하나가 있고 우리는 키 2의 필드 배열과 동일하게 설정하십시오 그게 열쇠 2에 있다는 것을 어떻게 알 수 있습니까? 위로 테스트, 우리는 그 열쇠 2를보고, 우리가 원하는 문자열이 있습니다

알았어, 가자 우리의 시험은 한 번 더 있고 우리는 지나가고 있습니다 그럼 모든 것을 하나씩 살펴 보겠습니다 더 많은 시간 명확성을 위해, 우리는 파서가 markdown 파일을 전달합니다

우리는 데이터를 얻고 우리는 열쇠 "제목"아래에 문자열 "내 제목"을 기대하고 우리는 기대하고있다 "설명"의 열쇠 아래에있는 "여기에 설명"이 있습니다 "MarkFile1md"파일은 "title"이 같은 테스트 더미 블로그입니다 "내 제목"과 "설명"은 "여기에 대한 설명"과 같습니다

우리의 전체를 실행하자 테스트 스위트와 우리는 여전히 녹색에있어! 계속 나아가