Simple User Authentication with Php & Mysql

첫 번째 사용자가 웹 사이트를 디자인 할 때 대부분의 웹 사이트를 작성하는 동안 안녕하세요 인증 시스템, 나는 당신에게 간단한 사용자를 소개하고 싶다

인증 시스템은 모든 프로젝트에 대해 완벽하게 사용자 정의가 가능합니다 이 프로젝트는 github를 통해 액세스 할 수 있습니다 호스트에서 복제 한 다음 열 수 있습니다 귀하의 웹 사이트 설치 스크립트가 실행됩니다

설치 과정에서 reCAPTCHA를 사용하여 제목, 도메인, 사용 등 대부분의 것들을 사용자 정의하고, 더 나은 방법 사용자 데이터를 사용자 정의 할 수 있다는 것입니다 사용자가 입력해야하는 데이터를 검색 할 수 있습니다 데이터베이스의 사용자 테이블에 있어야합니다 무제한으로 추가 할 수 있습니다 필드 및 각각에 대해 이름, 형식을 설정할 수 있으며 등록 또는 고유하지 않거나 등록해야하며 수정할 수 있어야합니다

채우기 여부와 그 힌트를 설정하거나 채우기 위해 사용자를 안내하거나 그 사용법 설치를 마친 후 등록, 로그인, 이메일 확인, 비밀번호 재설정 및 사용자 대시 보드 준비가 완료되었습니다 그러나 처음에는 대시 보드에서 원하는대로 확장하기 시작합니다 프로필 편집 및 암호 변경 페이지에서 쉽게 거기에 다른 탭을 투영하십시오 이 방법으로 프로젝트의 대부분을 준비 할 수 있습니다 이 비디오를 시청 해 주셔서 감사합니다

github에 있다면 이 프로젝트는 스타이고 의견을 공유하고 의견을 남기는 것을 잊지 마십시오 이 비디오 향후 비디오에서 곧 만나요

What is a RESTful API? | Creating a RESTful API with ReactPHP

이 채널의 새로운 시리즈에 오신 것을 환영합니다 이 시리즈에서는 ReactPHP로 RESTful API를 만드는 방법에 대해 살펴볼 것이다

먼저 RESTful API가 무엇인지 살펴 보겠습니다 그것이 작동하는 방법과 그것을 구축하는 동안 우리가 명심해야 할 것 그래서 실제로 RESTful API는 무엇입니까? 음, REST는 표현 상태 전달을 나타냅니다 그리고 RESTful API의 모든 아이디어는 실제로이 API를 사용하여 전송할 수 있다는 것입니다 데이터 주변

너무 추상적으로 들리는가? 왜 우리가 그것을 사용하기를 원하는 주된 목적은 전통적인 웹 페이지의 대안입니다 이 전통적인 웹 페이지가 우리의 필요에 맞지 않을 때 그렇다면 RESTful API 란 무엇입니까? 예를 들어 우리의 브라우저 인 클라이언트가 있다고 가정 해 봅시다 우리는 클라이언트이고 웹 페이지처럼 분명히 서버가 있습니다 그런 다음 일부 URL로 요청을 보내면 응답을받습니다 또한 다른 URL에 대한 일반 웹 페이지의 경우 일부 HTML이 포함 된 다른 웹 페이지가 제공됩니다

예를 들어, 우리는 메인 페이지, 카탈로그, 제품 페이지 등을 가지고 있습니다 이것이 전통적인 웹 페이지의 작동 방식입니다 그러나 우리가 서버를 요청하기를 원할 때 어떤 경우에는 어떤가? 그러나 응답으로 우리는 정말로 HTML이 필요하지 않습니다 한번 보죠 우리는 여전히 서버를 보유하고 있지만 이제는 다른 고객들과 함께 있습니다

모바일 애플리케이션이 있다고 가정 해 보겠습니다 그리고 모바일 애플리케이션은 서버에서 데이터를 저장하고 가져와야합니다 하지만 문제는 HTML을 필요로하지 않는다는 것입니다 대신 다른 데이터 형식을 사용합니다 한 가지 예가 단일 페이지 응용 프로그램 일 수 있습니다

여기에 실제로 웹 페이지가 있지만 첫 번째 요청에 대해서만 HTML이 필요합니다 우리가 데이터를 교환하기를 원하는 다른 요청 : 서버에 무언가를 보내고 그것의 데이터 따라서 전통적인 웹 페이지의 주된 차이점은 이러한 모든 경우에 우리가 신경 쓰지 않는다는 점입니다 HTML에 관해서는 데이터를 앞뒤로주고 싶습니다 그리고 알아 두어야 할 중요한 점은 RESTful API 서버가 상태를 유지할 수 없다는 것입니다 연결되어있는 개별 클라이언트는 상관하지 않습니다

따라서 우리는 클라이언트를 가지며 이러한 끝점을 가진 RESTful 서버를 갖게됩니다 이 URL은 Google 서버에서 지원하는 URL입니다 그런 다음이 URL 각각은 HTTP 동사에 의해 정의 된 다른 동작을 지원할 수도 있습니다 / clients에 대한 GET 및 POST 요청이 있습니다 / 제품에 대해서는 DELETE 요청이있을 수 있습니다

그리고 / 주문에 대해서는 GET, POST 및 PUT이 있습니다 이것이 RESTful API의 모습입니다 우리는 두 개의 URL을 가지고 있으며 각 URL은 아마도 두 개의 다른 URL을 지원할 것입니다 HTTP 동사 그리고 고객으로부터 우리는 요청을 보낼 수 있습니다

웹 응용 프로그램의 경우 AJAX 요청 일 수 있습니다 그런 다음 일부 데이터에 대한 응답을받습니다 우리는 페이지를 다시 렌더링하는 데 사용하는 웹 응용 프로그램입니다 RESTful API의이 아이디어는 각기 다른 URL을 지원하는 서버를 가지고있다 HTTP 요청의 유형이지만, 우리가하는 모든 일은 데이터를 교환하는 것입니다

데이터의 형식은 JSON, XML 또는 다른 것일 수 있습니다 여기서 중요한 점은 이러한 API 끝점을 직접 호출하지 않아야한다는 것입니다 사용자가 브라우저에 타이핑하여 이 모든 URL은 백그라운드 호출에 의해 요청됩니다 : JavaScript 또는 모바일 앱 따라서 RESTful API를 사용하여 데이터 교환에 사용합니다 이것이 유일한 방법이기 때문에 클라이언트를 서버에 연결하고 일부 백엔드에 연결할 수 있습니다

이러한 클라이언트는 HTML을 원하지 않으며 데이터가 필요합니다 그리고 다시 한 번 국가에 대해서 그것은 매우 중요합니다 RESTfull API는 상태 비 저장이며 요청간에 클라이언트 상태가 유지되지 않습니다 서버에 저장된 세션이 없습니다

서버는 클라이언트가 연결되어 있는지 신경 쓰지 않습니다 좋습니다 이론적으로는 RESTfull API를 만들어 보겠습니다

How to setup codeigniter 3 in localhost with XAMPP

안녕하세요, 내 superfast codeigniter 튜토리얼 시리즈에 오신 것을 환영합니다 처음에는 codeigniter

com에 codeigniter 3을 설치해야합니다 여기에 우리가 간다, 이것은 CI의 최신 버전입니다, zip 파일을 다운로드하십시오 그런 다음 추출하십시오 이제는 로컬 서버에서 xampp, 번들 apache, mariadb, php가 필요합니다 거기 xampp의 3 버전, 그들은 Windows 용, 리눅스, 그리고 맥 OS입니다

실제로 나는 이것을 다운로드했다 나는 창문에 xampp을 사용한다 설치 한 후에는 이미 아파치를 실행했는지 확인하십시오 그냥 시작하십시오 앞에서 말한 것처럼 zip 파일을 압축 한 후 codeigniter를 다운로드하고 전체 폴더를 복사 한 다음 xampp 설치에 붙여 넣을 수 있습니다

내 로컬 C에 xampp을 설치했기 때문에 xampp 폴더 안에 htdocs가 있는지 확인하십시오 이제 codeigniter 폴더의 폴더 이름을 바꿀 수 있습니다이 경우에는 이름을 지정합니다 모든 작업이 끝나면 브라우저로 돌아가서 localhost를 입력하고 폴더 이름을 찾습니다 여기 우리가 간다

이것은 codeigniter의 환영 페이지 다 그것은 당신이 완벽하게 수행했음을 의미합니다 이제 예쁜 URL을 설정해야합니다 이것은 선택 사항이지만, 가지고 있으면 좋지만, 페이지의 맨 아래를 보면 사용자 안내서를 볼 수 있으며이 아이콘을 클릭하면 htaccess를 찾을 수 있습니다 여기에서 볼 수 있듯이 여기에 표시된 결과가 너무 많습니다

codeigniter URL을 클릭하면됩니다 이 줄을 찾으면 이것은 codeigniter의 기본 htaccess입니다 지금까지는 프로젝트를 구성해야합니다 이 튜토리얼에서 나는 PHP 폭풍을 사용하고, 이제는 내 프로젝트 폴더를 찾아 구성 할 것이다 여기서 우리는 프로젝트를 구성하고, 여기에서 볼 수있는 라인은 codeigniter가 제공하는 기본 htaccess이며, 프로젝트의 루트에 새 파일을 추가해야하며

htaccess를 호출합니다 브라우저로 돌아가서 모든 행을 복사하고 현재 htaccess 파일에 붙여 넣으십시오 기본 페이지를 설정하려면이 폴더처럼 views 폴더 안에 홈 페이지가 있어야합니다 우리는 새 컨트롤러를 만들고 그냥 새 파일을 만들고 homephp로 설정합니다

php 클래스 -> home -> extend -> ci 컨트롤러의 공개 문서를 잊지 마십시오 주의를 끌기 위해 클래스 이름을 대문자로 사용해야합니다 클래스 이름은 파일 이름과 동일합니다 이제 우리는 경로로 이동하고 아래로 스크롤하면 기본 컨트롤러를 찾아 집과 함께 변경합니다 이제 홈 클래스로 돌아가서 이제 기본 함수를 추가하면 index가 호출됩니다

우리가 그것을 검은 색으로 놓아 두었다면 어떤 견해도 가지지 않기 때문에, 어쨌든 잘 될 것입니다 브라우저로 돌아가서 페이지가 비어 있다면 좋은 뜻입니다 여기에 임의의 텍스트를 추가하여이 함수를 테스트 할 것입니다 그냥 성공 보고 주셔서 감사합니다

내 채널에 다른 동영상을 구독하기 만하면됩니다 거기서 보자

DPC2019: Performant APIs with GraphQL and PHP – Andrew Rota

GraphQL 및 PHP로 실행 가능한 API Andrew Rota >> 안녕하세요, 여러분 글쎄, GraphQL과 PHP를 사용하여 실행 가능한 API에 오신 것을 환영합니다

슬라이드는 Bitly URL 인 SlideShare에서 사용할 수 있습니다 나중에 따라하거나 보려는 경우 URL을 트윗했습니다 API는 중요합니다 우리 모두는 아마 우리 응용 프로그램에서 일종의 API를 가지고있을 것입니다 종종 이러한 것들은 우리 고유의 모바일 응용 프로그램, 웹 브라우저, 다른 API와 대화합니다

그들은 모두 다른 모양으로옵니다 그들은 이런 모습을 보일 것입니다 어쩌면 당신은 블로그가 있고 당신에게 기사 및 코멘트 및 저자를주는 API가있을 것입니다 당신은 다른 방식으로 이것을 처리하고, 모양이 아닌이 API를 구현할 수 있습니다 귀하의 필요에 따라 다릅니다

당신은 편안한 API와 같은 모든 단일 리소스에 대한 요청을 만들 수 있습니다 또는 특정 응용 프로그램에 필요한 모든 데이터를 제공하는 하나의 엔드 포인트를 작성하십시오 우리가 이야기 할 전통적인 API에 대한 도전 과제가 있으며 GraphQL은 해결할 하나는 데이터를 가져 오는 것이고 특정 엔드 포인트에서 필요한 것보다 많은 데이터를 요청하는 것입니다 대역폭에 제한이 있고 큰 요청을하기 싫으면 도전 과제입니다 불필요하게

데이터를 가져 오는 과정에서 서버에 여러 번 왕복해야하는 어려움이 있습니다 대기 시간에 민감한 환경에서 어쩌면 모든 요청에 ​​고정 된 비용이 소요되는 기본 모바일 앱을 보유하고있을 수도 있습니다 전통적인 API를 사용하는 개발자의 도전도 있다고 생각합니다 특히 프론트 엔드 및 백엔드 개발자가있는 대규모 조직 또는 엔드 포인트에서 반복되는 기본 앱 개발자, 백엔드와 프론트 엔드간에 앞뒤로 이동 개발자가 API를 변경하고 클라이언트에 필요한 데이터 모양을 변경합니다 GraphQL은 효율적이고 이해하기 쉬운 개발을위한 대체 아키텍처를 제공합니다

아피스 또 다른 선택입니다 도구 상자에서 API를 작성하는 방법과 구조화 방법을 생각하는 또 다른 도구입니다 우리의 데이터를 고객에게 제공합니다 제 이름은 앤드류 로타입니다

보스톤의 Wayfair라는 회사에서 프론트 엔드 플랫폼 팀을 이끌고 있습니다 나는 암스테르담에있을 것을 기쁘게 생각합니다 트위터에서 나를 따라오고 싶다면 GraphQL은 무엇입니까? 나는 GraphQL이 당신에게 새로운 것이라고 생각하고있다 이전에 GraphQL에 대해 들어봤을 지 모르지만, 하지만 아마도 API를 구축하지 않았을 것입니다

GraphQL은 API를위한 쿼리 언어입니다 그것은 단지 언어 이상입니다 그것이 GraphQL의 QL입니다 그것은 런타임입니다 기존 API로 쿼리를 수행하기 위해 API를 작성하는 기술 스택입니다

그러나 데이터는 응용 프로그램 내에서 액세스됩니다 GraphQL 쿼리는 다음과 유사합니다 이것은 간단한 GraphQL 쿼리입니다 나는 오늘이 이야기를 위해 느슨한 데모 응용 프로그램을 사용할 것입니다 PHP 컨퍼런스를 요청하고 있으며, 컨퍼런스, 정보 그 회의들에 대해서

그래서 이것은 쿼리가 어떻게 생겼는지입니다 조금 익숙해 보일 수도 있습니다 아마 뭔가 JSON처럼 보일지도 모릅니다 그리고 그것이 가정되기 때문입니다 요청한 모양의 JSON 데이터를 반환합니다

따라서 GraphQL 쿼리는 본질적으로 내용이없는 단지 JSON 데이터 구조입니다 값 그리고 이러한 쿼리 내에서 중첩 된 값을 요청할 수 있습니다 이것은 GraphQL이 조금 더 강력 해지기 시작하는 곳입니다 내가 보조 자료, 연사뿐만 아니라 회의를 요청하고 싶다면 앞으로 나아갈 수 있습니다

그렇게 그리고 다시, 나는 처음에 요청한 데이터를 얻는다 나는 오늘 당신이 할 수있는 몇 가지 Top을 다루려고하는데, GraphQL이 무엇인지 소개합니다 그리고 GraphQL에서 개념이 무엇인지 살펴보십시오 다른 API에 익숙하다면 GraphQL은 약간의 패러다임 전환입니다

다른 개념과 다른 용어 및 다른 정의가 있습니다 그리고 그것들을 이해하면 GraphQL의 작동 방식과 탐색 방법에 대한 좋은 아이디어를 얻을 수 있습니다 더 나아 우리는 GraphQL API를 어떻게 사용할 수 있는지 클라이언트 측 GraphQL에 대해 이야기 할 것입니다 우리는 자바 스크립트에 중점을 둘 것이지만 모든 유형의 클라이언트에서 그렇게 할 수 있습니다

그리고 GraphQL에 대해 PHP로 서버 측에서 특별히 이야기합니다 아마도이 회의에 조금 더 흥미로울 것입니다 PHP 애플리케이션에서 GraphQL을 구현하는 방법에 대해 이야기합니다 몇 가지 고급 주제에 대해 이야기하고 GraphQL 툴링에 대해 조금 이야기하십시오 GraphQL 작업의 재미있는 부분

GraphQL은 2012 년에 Facebook에서 내부적으로 개발되었습니다 그들은 얼마 동안 그것을 생산에 사용했습니다 또한 응용 프로그램에 대한 요구 사항 중 일부를 제공하기 위해 구축되었습니다 그것은 2015 년 오픈 소스였습니다 그래서 잠시 동안 오픈 소스 기술 스택으로 사용되어 왔습니다

그리고 실제로는 적절한 사양을 가지고 있습니다 따라서 다양한 환경에서 스펙을 구현할 수 있습니다 GraphQL은 클라이언트와 서버 둘 다 기술에 의존하지 않습니다 즉, 다른 기술 스택에서 사용할 수 있습니다 클라이언트에는 JavaScript에 대한 구현, JavaScript에 대한 여러 구현이 있습니다

Swift 용, Android 애플리케이션 용 GraphQL을위한 서버 측 구현도 있습니다 가장 일반적인 것이 노드입니다 따라서 페이스 북이 Graphql을 오픈 소스로 만들 때 노드 참조 서버를 만들었습니다 그리하여 많은 GraphQL 서버의 출발점이되었습니다

그러나 루비 (Ruby)를위한 파이썬 (Python)을위한 후속 커뮤니티 서버 구현이 있었고, 물론, PHP를 위해 그리고 GraphQL을 선택한 이유에 대해 생각할 때, 우리는 이러한 문제 중 일부를 해결하는 것에 대해 생각합니다 이전에 언급 한 바 있습니다 GraphQL을 사용하여 클라이언트는 필요한 데이터의 모양을 정확히 요구합니다 단일 요청에서 여러 리소스를 쿼리 할 수 ​​있습니다

이러한 왕복을 줄일 수 있습니다 API는 강력한 유형의 스키마로 정의됩니다 이것은 GraphQL에서 간과되며 실제 입력 된 API입니다 개발자를위한 강력한 툴링을 가능하게합니다 우리는 나중에 그것을 살펴볼 것입니다

물론이 도구 중 일부는 다른 API 기술에 유용합니다 그러나 GraphQL의 특징 중 일부는 실제로 많은 가능성을 열어줍니다 GraphQL은 웹 스택에 어디에 들어 맞습니까? 한발 뒤로 물러나서 이것이 시스템에 맞는 곳을 확인하십시오 웹 응용 프로그램이 있다면 클라이언트가 있어야합니다 자바 스크립트가 관련되어있을 수 있습니다

그것은 네이티브 응용 프로그램이 될 수도 있습니다 그리고 그 클라이언트는 서버에 요청을 할 것입니다 어쩌면 전체 응용 프로그램이 SPA 일 수도 있고, 많은 AJAX를 만들거나 요청을 가져 오는 것일 수도 있습니다 어쩌면 당신은 서버 쪽 콘텐츠의 대부분과 때로는 기능을 추가 할 수 있습니다 서버에서 콘텐츠를 다시 가져옵니다 GraphQL을 사용하면 서버의 단일 끝점을 통과하게됩니다

이 경우 PHP 서버 그리고 PHP 서버는 데이터를 데이터베이스에서 가져 와서 응답을 되돌려 보냅니다 클라이언트에게 그러나 그 데이터 저장소는 무엇이든 될 수 있습니다 다른 서비스 일 수도 있고 캐스트 레이어 일 수도 있습니다

GraphQL은 백엔드 데이터 저장소가 무엇인지에 대해 논쟁하지 않으며 사용자가 요청할 수 있습니다 모든 데이터 지속성 계층에서 이것은 우리가 오늘 말하고있는 것입니다 이것이 GraphQL을 구현하는 유일한 방법은 아닙니다 PHP에없는 GraphQL 서버를 Node와 같은 곳에 넣을 수 있습니다

데이터베이스 나 데이터베이스에 데이터 요청을하는 PHP 서비스가 있다고 말합니다 캐시 계층 또는 다른 서비스 많은 옵션이 있습니다 당신은 그것에 대해 생각할 수 있습니다 그러나 GraphQL은 중간 API 계층에 있습니다

GraphQL의 개념을 탭해 보겠습니다 GraphQL 생태계를 구성하는 정의 및 용어 중 일부입니다 쿼리로 시작하십시오 기본적으로 GraphQL은 쿼리와 필드에 관한 것입니다 GraphQL에서는 객체의 필드를 쿼리합니다

응답은 쿼리와 동일한 모양을 갖습니다 이 코드 블록 전체가 쿼리입니다 그리고 그 필드는 회의, 이름 또는 그 아래의 날짜가 될 것입니다 필드는 스칼라 값, 프리미티브, 문자열, 숫자 또는 기타 객체 일 수 있습니다 우리는 다른 대상 일 때 하위 선택에 대해 이야기합니다

우리가 프리미티브가 아닌 다른 복잡한 객체를 선택할 때 그리고 이들을 계속 중첩 할 수 있습니다 검색어 전체에서 이러한 하위 항목을 선택할 수 있습니다 그러면 관련 리소스에 대한 여러 요청을 피할 수 있습니다 쿼리는 인수를 가질 수 있습니다

명명 된 인수는 중첩 된 객체의 각 필드에 전달할 수 있습니다 데이터를 필터링하거나 페이지 매기기, 정렬 또는 검색하려는 경우 인수를 전달할 수 있습니다 서버 쪽에서 처리하십시오 클라이언트 측에서는 변수를 사용할 수도 있습니다 여기서 동적 데이터를 전달하여 사용중인 인수에 전달할 수 있습니다

귀하의 질문에 그래서, 그것들은 여러분이 만드는 방법입니다 여러분이 요청을하는 방법입니다 그것은 여러분이 쿼리를 만드는 방법입니다 서비스에

서버 측에서는, GraphQL에서 정의 된 데이터 유형을 정의하는 유형 집합을 정의해야합니다 요청할 수 있습니다 그래서 우리는 스키마를 통해 그렇게합니다 여기서 볼 수있는 코드는 실제로 GraphQL 스키마 언어입니다 그것은 GraphQL 스키마를 기술하는 방법입니다, 어떤 것은 서버 측에서 이것을 빌드하고, 다른 것은하지 않습니다

그것을 유물로 생성합니다 GraphQL 그래프에서 스키마 정의에 대해 이야기하는 방법입니다 그래서 우리는이 스키마가있을 때 객체의 유형에 대한 필드를 정의 할 수 있습니다 우리가 그래프에 가지고있는 것 유형은 다른 필드가있는 객체 일 수 있습니다 스칼라, 다른 유형의 목록 일 수도 있고, 무수한 값일 수도 있습니다

무언가를 null이 아닌 것으로 표시 할 수 있습니다 어느 것이 엄청나게 귀중한가요? 클라이언트 측에서는 값이 정의되어 있는지 여부를 알지 못할 수도 있습니다 당신은 당신의 타입 시스템에서 보증을 할 수 있습니다 클라이언트 쪽에서는 항상 여기있을 것입니다 그렇지 않으면 뭔가 잘못되었습니다

아니면 여기에 없을 것이고 나는 그 부정적인 경우를 다룰 필요가 있습니다 근본적으로 루트 유형 중 하나 인 쿼리에 대해 조금 이야기했습니다 돌연변이라는 또 다른 뿌리 유형이 있습니다 그리고 루트 타입은 GraphQL 내의 특별한 타입입니다 쿼리는 데이터를 요청하기위한 것입니다

그들은 get request와 유사합니다 그래서 우리는 데이터를 읽습니다 GraphQL 클라이언트는 단일 종점에 대해 이러한 쿼리를 만듭니다 때로는 "검색어"라는 검색어가 포함 된 검색어가 표시 될 수 있습니다 로깅이나 쿼리에 대한 메타 데이터 추적에 유용합니다

그러나 이것들은 선택 사항이며, 대괄호를보고 질의를 직접 시작할 수도 있습니다 돌연변이는 또 다른 특별한 유형입니다 그것들은 데이터를 수정하기위한 것입니다 게시 요청, 무언가 추가, 무언가 삭제, 무언가 변경 등과 유사합니다 근본적으로 다른 것처럼 보일 수 있지만 쿼리와 매우 유사하게 작동합니다

이들은 돌연변이 경로 유형으로 시작합니다 그리고 그들은 당신이 뭔가를 바꾸거나 추가하고 있기 때문에 논쟁이있을 것입니다 하지만 그렇지 않으면 쿼리와 동일합니다 데이터를 다시 가져올 때 클라이언트에서 이러한 쿼리를 어떻게 사용합니까? 우리는 우리의 서브 센터 클라이언트 측에 쿼리를 어떻게 작성합니까? GraphQL은 쿼리 작성에 관한 것입니다 정의 된 스키마를 사용하여 서버에 데이터를 요청할 수 있습니다

JavaScript로 만드는 것에 대해 이야기하십시오 이러한 요청을하기 위해 우리가 할 수있는 몇 가지 라이브러리가 있습니다 우리는 확실히 데이터를 되돌리기위한 곧은 HTTP 요청 인 곧은 말풍선 요청을 할 수 있습니다 그러나 GraphQL을 사용하면 클라이언트 라이브러리를 사용하면 도움이 될 것입니다 얻을 수있는 것처럼 간단하게 클라이언트에서 GraphQL을 시작하려면 라이브러리 Lokka처럼

jQueryAJAX와 비슷한 간단한 클라이언트 라이브러리이고 아마도 API를 가지고있을 것입니다 그리고 그 이상은 아닙니다 캐싱은 발생하지 않으며 클라이언트 쪽 진술을 전혀 수행하지 않습니다 그것은 서비스에 대한 직접적인 쿼리입니다

이것은 GraphQL을 시작하는 좋은 방법입니다 더 복잡한 클라이언트 라이브러리가 있습니다 그리고 그들 중 하나, 아마도 가장 인기있는 하나는 아폴로라고 불립니다 이는 클라이언트 측에서 완벽한 데이터 관리 솔루션입니다 이것은 JavaScript, React를위한 구현입니다

그러나 그들은 다른 프론트 엔드 라이브러리뿐만 아니라 애플리케이션을위한 구현을 가지고있다 Apollo가 제공하는 기능은 GraphQL API로 기능을 잠금 해제하는 것입니다 클라이언트 측 캐싱을 위해 정규화 된 데이터와 같은 라인을 지원합니다 로컬 및 원격을 결합 할 수 있습니다 타격을하지 않아도 모든 데이터를 쿼리 할 수 ​​있습니다

서버, 페이지 매김, 재 페치, GraphQL로 도전 할만한 모든 것들, 또한 단단한 클라이언트 라이브러리로 처리 할 때 실제로는 잠금을 해제 할 수 있습니다 다른 API가 기본적으로 제공하지 않을 가능성이 많습니다 괜찮아 이것이 우리가 클라이언트에서 GraphQL을 사용하는 방법입니다 나는 GraphQL에 대해 특히 PHP와 관련하여 이야기하고 싶다 따라서 클라이언트 측 GraphQL이 쿼리 작성에 관한 것이라면 서버에서 데이터를 요청하십시오

서버 측 GraphQL은 스키마를 구현하여 데이터를 반환합니다 PHP로 서버를 구축해 보겠습니다 체크 아웃을 권장하는 훌륭한 서버 라이브러리가 있습니다 PHP로 GraphQL 서버를 만들려는 경우 이것이 바로 webonyx

graphQLPHP 라이브러리입니다 이것은 GraphQL의 완벽한 구현이며 원래의 Node 참조에서 영감을 얻었습니다 도서관 원래 구현과 비슷한 패턴을가집니다

이 도서관이 실제로 당신에게주는 것은 무엇입니까? PHP로 API를 개발할 때 몇 가지 기능이 필요합니다 GraphQL API를 올바르게 구축하십시오 그 중 하나는 유형 시스템 인 경우 유형 프리미티브입니다 따라서 라이브러리는 이러한 프리미티브를 제공합니다 또한 쿼리를 구문 분석, 유효성 검사 및 실행하는 기능을 제공합니다

그것은 GraphQL의 무거운 리프팅입니다 실제로 쿼리를 가져 와서 구현 한 해결 자에 대해 실행합니다 나중에 볼 수있는 도구의 잠금을 해제하는 형식 인트로 피싱을 지원합니다 또한 지연된 필드 해상도와 같은 기능을 지원하여 문제를 해결할 수 있습니다 로 뛰어 들다

어떻게 시작하니? 엔드 포인트부터 시작하십시오 Unruh와 마찬가지로 REST와 같이 여러 개의 끝 점이 있습니다 GraphQL에는 하나의 끝 점이 있습니다 /graphQL 그리고 그 대답을 얻습니다

또한 단일 종단점에 대한 쿼리가 실행되고 GraphQL은 GraphQL PHP 라이브러리는 파싱, 실행을 모두 처리 할 수있는 facade 함수를 제공합니다 해당 쿼리를 해결하기 위해 모든 작업을 수행하는 유효성 검사는 다음과 같습니다 너는 끝낼거야 그런 다음 루트 유형으로 시작해야합니다 그게 질의입니다 GraphQL 쿼리에는 두 가지 루트 유형이 있습니다

돌연변이, 그리고 첫 번째 쿼리부터 시작하겠습니다 루트 유형에는 루트 필드 목록이 있습니다 이들은 귀하의 API에 대한 진입 점입니다 이것은 내 응용 프로그램에 대한 모든 회의를 가져 오는 것과 같을 수 있습니다 각 필드에는 데이터를 가져 오는 데 사용할 수있는 유형 및 해결 방법이 있습니다

GraphQL PHP에게이 특정 필드에 대한 데이터를 얻는 방법을 알려주는 함수가 있습니다 필드가 평평하지 않아도됩니다 다른 객체를 반환 할 수 있습니다 그들은 프리미티브를 반환 할 필요가 없습니다 이렇게하면보다 복잡한 데이터 그래프를 작성할 수 있습니다

일단이 필드를 설정하기 시작하면, PHP에 필드에 대한 데이터를 가져 오는 방법을 알려줘야합니다 그리고 우리는 해결 함수를 통해 이것을합니다 여기에서 데이터 지속성에 액세스하기위한 논리를 작성하게됩니다 층 종종 당신은 해결사에서 직접 그렇게하지 않을 것입니다

비즈니스 또는 도메인 논리로 이동하고 결국에는 계층으로 이동하십시오 GraphQL은 그것이 무엇인지 신경 쓰지 않으며 구현 방법에 많은 유연성을 제공합니다 그 스칼라의 경우, 필드의 값, 객체 유형의 경우, 더 융통성을 원한다면 많이 활용하십시오 리졸버 기능이 중요합니다

당신은 많은 resolve 함수에 접근 할 수 있습니다 이전 해결 필드의 결과로 시작하십시오 데이터가 더 많이 중첩되면서 회의용 스피커를 선택하려고 할 수 있습니다 어떤 회의를 위해 스피커를 선택해야하는지 알아야합니다 당신은 그 논쟁을 가지고 있습니다

필터링하거나 클라이언트에서 데이터를 전달하는 경우 변화가없는 정적 데이터를 전달하는 데 유용한 컨텍스트가 있습니다 요청의 라이프 사이클에서 모든 필드에 대한 액세스 권한이 필요합니다 예를 들어 인증 일 수도 있습니다 일반적으로 GraphQL 패턴은 리졸버 내에서 권한 부여를하지 않는 것이 좋습니다

보다 강력한 인증을 수행 할 수있는 비즈니스 계층에 위임 논리 이러한 확인자와 이러한 복잡한 유형을 구축하는 것은 실제로 GraphQL API 자, 사용자 정의 객체 유형을 생성합시다 이렇게하려면 먼저 객체 유형이 무엇인지 정의하고 새 필드 및 해당 필드 확인자 함수 작성 따라서 루트 쿼리 형식과 마찬가지로 사용자 지정 형식은 필드 컬렉션이며 차례 차례로 그들 자신의 유형도 마찬가지이다 회의 유형에 이름, URL 및 기능 필드가있을 수 있습니다

이들은 문자열이 될 것입니다 그러나 그 중 두 필드가 null이 아님을 알고 있습니다 그래서 저는 제 데이터가 항상 그곳에 있다는 것을 보장 할 것이라는 것을 압니다 그래서, 저는 그것을 API의 타입 시스템에 추가 할 수 있습니다 필드에는 다른 사용자 정의 객체 유형도있을 수 있습니다

따라서, 회의에는 연설자가있을 수 있으며, 이는 연설자 지정 목록이 될 것입니다 내가 만든 타입 그리고 나서 Graphql에 데이터를 얻는 방법을 알려주는 resolver 함수를 제공 할 수 있습니다 들 그리고 그게 다야

이것은 기본적으로 PHP로 GraphQL 서버를 구축하는 것입니다 몇 가지 사용자 정의 유형이 있습니다 스칼라 값을 사용하는 유형의 필드가 있습니다 또는 다른 값 목록 그리고 GraphQL PHP 서버는 데이터를 처리하고 데이터를 요청합니다 백 엔드에 저장하십시오

어제 더 많이 파고 싶으면 어제 워크샵을했습니다 슬라이드를 사용할 수 있습니다 그들은 talk�의 끝에 있으며,이 응용 프로그램을 사용하여 PHP로 GraphQL을 구현할 수 있습니다 구조 마지막 슬라이드 인이 그림은 GraphQL 툴링의 미리보기입니다 사용할 수 있습니다

GraphQL에 대해 재미있는 부분 중 하나라고 생각하기 때문에 그 부분에 들어가기를 원합니다 GraphQL의 핵심 기능은 자체 검사 시스템입니다 GraphQL에 쿼리를 만들어서 지원하는 쿼리를 물어볼 수 있습니다 따라서 일반적으로 수동으로 이러한 쿼리를 수행하지는 않습니다 귀하의 응용 프로그램은 아마 상관 없어

그러나 툴링에 관심을 갖는 개발자 툴링에 관심이 있습니다 이러한 인트로 스펙 션 엔드 포인트를 이러한 인트로 스펙 션 쿼리를 사용자에게 공개 할 수있다 귀하의 API 어쩌면 내부 개발자가 외부 API에 노출하고 싶지 않을 수도 있습니다 하지만 그들은 그래프의 모양을보고 복잡한 오브젝트를 얻을 수 있습니다

처리해야합니다 그러나 API의 모양을 보여 주며 사용할 수있는 유형을 확인할 수 있습니다 이 기능은 강력한 툴링을 구축 할 수있는 많은 기회를 제공합니다 GraphQL은 오픈 소스이기 때문에 많은 툴링이 커뮤니티 내가 아는 한 가장 먼저 출시 된 도구는 그래픽이라고하는 도구입니다

데모를 본 적이 있거나 GraphQL의 데모를 둘러 본 적이 있다면 무엇을 보았을 것입니다 이 도구는 여기에 검색어를 작성하고 구조화 된 형식으로 서버에서 다시 데이터 그러나 당신은 먼 쪽에도이 문서화 패널을 가지고 있습니다 어떤 분야에 대한 정보를 제공합니다 GraphQL에서 할 수있는 일 중 하나는 각 필드에 설명을 설정하는 것입니다

그리고 그것은 인트로 스펙 션 쿼리에서 다시 돌아올 것이고 그래서 당신은 어떤 문서를 제공 할 수 있습니다 코드 자체에서 각 필드의 용도와 사용 방법을 설명합니다 GraphQL 놀이터 (GraphQL Playground)가 있습니다 그래픽과 비슷하지만 더 많은 기능이 있습니다 하나는 스키마를 보는 능력입니다

그리고 나는 그것을 지금 시연 할 수 있습니다 그래서, 비슷한 응용 프로그램에 대한 GraphQL 놀이터를 끌어 올 경우 쿼리를 실행하십시오 서버를 위로 돌립니다 우리는 거기에 갈

쿼리를 실행할 수 있습니다 GraphQL이기 때문에 데이터를 변경할 수 있습니다 위치를 얻고 싶으면 그걸 얻을 수 있습니다 우리가 인트로 스펙 션 쿼리를 작성하고 있기 때문에이를 자동 완성하므로 IDE가 알고 있습니다 어떤 필드를 사용할 수 있습니까? 저는 연사를 만나고 싶고 그들의 연설을 듣고 싶습니다

그래서, 이것은 내가 원하는 구조로 데이터를 돌려 보낼 것입니다 나는이 모든 분야에 대한 나의 문서를 가지고있다 그래서 저는 그걸 조금 파헤 칠 수 있습니다 또한 앞서 언급 한 스키마 표기법을 내성 그것이 어디 있는지 알 수 있으며, 다른 도구에서도이 점을 사용할 수 있습니다

다음 도구는 보이저 (Voyager)입니다 모든 GraphQL API를 대화 형 그래프로 제공합니다 그러면 그래프가 어떻게 보이는지 알 수 있습니다 이것은 정말 유용합니다 만약 당신이 새로운 데이터 영역이나 새로운 어플리케이션으로 뛰어 들었다면 저는 생각합니다

처음으로 팀을 위해 새로운 엔지니어를 고용했는데 데이터에 익숙하지 않은 것일 수 있습니다 귀하의 API를위한 구조 그들은 당신을 즉시 사용할 수있게하고 당신은 이것을 만들기 위해 많은 것을 할 필요가 없습니다 이것은 내가 언급 한 데모 애플리케이션 인 애플리케이션을위한 매우 간단한 API입니다

하지만 실제로 GitHub API를 사용하고 싶습니다 사용할 수있는 GitHub GraphQL API가 있습니다 조금 더 복잡합니다 그래서, 여러분은 실제로 파고 들어갈 수 있습니다, 좋아요, 우리의 루트 쿼리로가 봅시다 우리는 우리가 질의 할 수있는 소수의 영역을 가지고 있습니다

우리는 저장소에 갈 수 있습니다 내 저장소 유형은 어떻게 생겼습니까? 그리고 모든 것을 즉시 볼 수 있습니다 IDE 플러그인도 있습니다 얼마나 많은 사람들이 PHPStorm을 사용합니까? 네 IDE를 사용하는 멋진 기능 중 하나는 JS GraphQL 플러그인을 사용할 수 있다는 것입니다

GraphQL과 통합 된 플러그인 IDE에서 쿼리를 바로 수행하고 데이터를 다시 가져와 자동 완성 기능을 사용할 수 있습니다 어떤 필드를 사용할 수 있는지 이해합니다 어떤 유형이 될 것인가 이것은 사실 GraphQL의 가장 좋아하는 기능 중 하나입니다

Graph API는 유형 API이기 때문에 GraphQL을 입력했기 때문에 실제로 유형을 생성 할 수 있습니다 우리 고객 코드에서 소비 될 수도 있습니다 Apollo가 작성한 Apollo Codegen이라는 도구가 있습니다 그러면 이전에 본 스키마를 실제로 생성 할 수 있습니다 다른 JavaScript 유형 주석 도구 인 TypeScript 또는 FlowType은 직접 유형을 생성합니다

귀하의 스키마에서 이 작업을 수행하여 개발시 코드 작성을 자동 생성 할 수 있습니다 IDE에서 JavaScript를 작성하면 필드를 요청하는지 여부를 알 수 있습니다 그것이 문자열이든, 필드이든간에 nullable인지 여부에 관계없이 정의되지 않은 사례를 처리하기 위해 null 체크를 작성하지 않은 것일 수 있습니다

당신이 잘 이해하지 못한다면 자주 접하게되는 오류를 다루십시오 서버 측에서 데이터 모양의 이것은 GraphQL 도구입니다 나는 그것들을 조금 파고들 것을 권한다 사실 GraphQL을 처음으로 탐색하는 경우 도구는 정말 훌륭합니다 방법으로 자신의 서버를 구축하기 전에 어떻게 작동하는지 이해할 수 있습니다

모든 것이 어떻게 잘 맞는지 이해하는 훌륭한 방법이라고 생각합니다 특정 데이터 도메인에 있거나 일반 GraphQL에 있든 상관 없습니다 그리고 많은 도구들이 커뮤니티에 의해 구축 되었기 때문에 훌륭합니다 그러나 GraphQL의 판매 시점은 도구가 존재하지 않는다고 나는 생각한다 훌륭합니다

그러나 그들이 존재할 수 있다는 사실은 GraphQL 유형 또는 내성 여부 그런 것들 따라서 GraphQL의 고급 기능에 대해 알아 보겠습니다 여기에 너무 자세히 설명하지 않을 것입니다

그러나 보안이나 성능에 대해 궁금한 점이있을 수 있습니다 그리고 그 주제들은 완전히 다른 이야기를위한 주제가 될 수 있습니다 그러나 나는 그들에게 손을 대어 그 문제들 중 일부를 다루는 방법에 대한 아이디어를 심어주고 싶다 GraphQL에서 문제는 n + 1 문제입니다

예를 들어, 우리가 회의를 선택하고 우리는 우리는 연사를 부를 때마다 우리의 결정자를 구현했습니다 필드에서 우리는 데이터 영역에 요청을하고, 그 다음에 회의용 연사 순진하게 구현하면 데이터에 매우 비효율적으로 액세스 할 수 있습니다 우리가이 쿼리에서 돌아 오는 백 회의가 있다고 가정 해보십시오 우리는 모든 회의에 대해 하나의 요청을합니다

그리고 나서 우리는 우리가 원하는 모든 스피커 세트에 대해 n�SQL 쿼리를 만들 것입니다 요청하십시오 이는 데이터를 요청하는 효율적인 방법이 아닙니다 그리고 이것은 실제로 GraphQL에 고유하지 않은 문제입니다 우리가 ORM을 가지고 만나는 것

데이터 액세스를 추상화 할 때마다 생각해야 할 부분입니다 그리고 GraphQL은 이것을 다루기위한 메커니즘을 제공합니다 그리고 그 메커니즘은 지연된 해결 자라 불립니다 GraphQL PHP 라이브러리는 실제로이 기능을 제공합니다 그것들은 필드 해상도를 지연시킬 수있는 지연된 객체를 제공합니다

지연된 필드에 대한 일괄 요청 그래서, 연사 수집의 경우, 제가 본질적으로하고 싶은 것은이 모든 것을 배치하는 것입니다 내가 요청하는 스피커 ID 미안, 요청한 모든 회의 ID 지연 객체를 반환합니다 그리고 나서 내가 갈거야, 내가 다른 모든 분야를 해결하면, 나는 단 하나의, 다중 회의를 위해 연사를 요청할 수 있기를 바랍니다

데이터에 따라 다른 방법으로이 작업을 수행 할 수 있습니다 그러나 GraphQL은 이러한 사례를 처리 할 수 ​​있으며 더 많은 작업이 필요하며 사용자는이를 알고 있어야합니다 GraphQL 작업 GraphQL PHP는 환경이있는 경우 지연 필드 해석 처리도 지원합니다 비동기 작업을 지원합니다

따라서 이러한 느낌은 비동기식으로 해결할 수 있습니다 당신은 바닐라 PHP로 그것을 얻지 못한다 그러나이를 가능하게하는 확실한 환경이 있습니다 GraphQL 서버를 외부에서 또는 외부로 공개하거나 작은 세트가없는 경우 응용 프로그램을 만들고 있다는 것을 알고있는 쿼리 중 병적 인 질의 시스템 성능에 매우 해로운 쿼리

어쩌면 그들은 악의적 인 존재 일 수도 있고 그렇지 않을 수도 있습니다 어쩌면 성능이 좋지 않은 쿼리 일 수도 있습니다 GraphQL PHP 라이브러리에서이를 처리 할 수있는 몇 가지 방법이 있습니다 하나는 실제로 필드 당 복잡성 비용을 설정할 수 있다는 것입니다 또한 GraphQL이 쿼리의 필드를 해석 할 때 이러한 복잡도 점수를 설정할 수 있습니다

그것은 복잡성의 합계로 계산할 것이고 임계 값을 설정하고 말할 수 있습니다 우리가이 많은 분야를 해결했다면, 나는 이것이 비싼 것임을 알고 있습니다 나는 질의를 중단 할 것이다 깊이 제한을 설정하여 요청한 중첩 필드의 수를 제한 할 수도 있습니다 검색어로 이것들은 완화 조치입니다 그들은 완벽하지 않습니다

그러나 제공되는 도구가 있습니다 애플리케이션에 의해서만 소비되는 API를 작성하는 경우 어쩌면 네이티브 앱이나 자바 스크립트 웹 애플리케이션을위한 API를 구축하고 있는지, 몇 가지 옵션이 더 있습니다 그 중 하나가 지속적인 쿼리입니다 따라서 사용자가 제어하는 ​​응용 프로그램을 사용하면 클라이언트에서 보낸 쿼리 은 자의적이지 않을 것입니다

빌드 할 때 쿼리가 생성 될 것을 알 수 있습니다 코드에서 추출 할 수 있습니다 프로덕션 환경에서 실행되는 코드는 전체 쿼리를 보내는 대신 쿼리에 대한 참조를 보냅니다 저장되어 디스크에있을 수도 있고 데이터베이스에있을 수도 있습니다 그러나 그것에 대한 참조를 보내고 있습니다

어쩌면 그것은 해시 된 참조 일 수 있습니다 아마도 ID 일뿐입니다 그러나 근본적으로 이것이 무엇인지는 하위 집합의 쿼리 목록을 만드는 것입니다 만들 수 있습니다 따라서 제작할 수있는 모든 가능한 쿼리를 빌드 타임 및 제작에서 알 수 있습니다

귀하의 서버에 대해 이를 통해 보안 및 성능 문제를 해결할 수 있습니다 이들 중 일부를 독립적으로 테스트 할 수 있습니다 통합 테스트를 통해 실행됩니다 그러나 달리 실행되는 문제를 일으킬 수있는 표면 영역을 줄입니다

서버에 대해 임의의 쿼리가 실행될 수 있습니다 마지막으로, 필자는 정말 흥미로운 기능이라고 생각되는 것을 간단하게 만지고 싶습니다 그러나 불행하게도 PHP에서는 지원되지 않습니다 그리고 그 구독입니다 따라서 구독을 통해 검색어를 만들 수 있습니다

그러나 쿼리 대신 해당 구독 유형을 사용하고 있습니다 사실 이벤트가 발생할 때마다 기본적으로 데이터를 요청할 수 있습니다 예를 들어 회의 통화에 투표 할 수 있다고 상상해 봅시다 따라서 투표에 가입하려면 GraphQL에 투표 이벤트가 발생할 때마다 너를 보내면 너의 클라이언트에게 그 특정한 것에 관한 데이터를 보낼 수있다 투표

일반적으로 이것은 오래 살아있는 웹 소켓 연결이 발생합니다 내가 생각하기에 우리가 GraphQL PHP에 내장 된 지원을하지 못하는 이유가 조금있다 그것을 위해 물론 불가능하지 않습니다 이러한 라이브러리에서는 지원되지 않습니다

이 기능이 GraphQL의 주요 기능이라면 관심을 가질 수 있습니다 귀하의 서버에 대한 또 다른 구현을 살펴보십시오 아마도 노드 일 수 있습니다 시스템에 대한 지원이 내장되어 있습니다 이는 특정 유형의 응용 프로그램에서 유용 할 수있는 흥미로운 기능입니다

라이브 데이터에 의존하는 응용 프로그램 당신이 업데이트되기를 원합니다 어쩌면 이메일 응용 프로그램이나 채팅 응용 프로그램을 실행 중일 수 있습니다 즉시 원하는 이벤트를 얻으려고하는 것 그리고 좋은 점은 기존 GraphQL 클라이언트 라이브러리에서 이러한 서브 스크립 션을 사용할 수 있다는 것입니다

본질적으로 쿼리가 형식화되어 있기 때문에 쿼리와 마찬가지로 사용할 수 있습니다 똑같은 방식 우리가 새로운 기술에 대해 생각할 때마다, 나는 그것으로 발생하는 직업 행동의 저는 GraphQL이 모든 일에 적합한 도구라고 말할 수는 없습니다 일부 응용 프로그램에 적합한 도구입니다 그리고 그것은 새로운 패러다임입니다

그것은 새로운 패러다임으로, 특히 API 개발을위한 많은 기회를 열어줍니다 성능에 민감하며 대기 시간에 민감합니다 그러나 새로운 도전이 있습니다 이 문제를 해결하고 싶습니다 저는이 호출을 GraphQL에 대한 Robert의 제안으로 추천하고자합니다

Robert는 GraphQL을 꽤 많이 다루었습니다 그래서, 일반적으로 그는 녀석을 강력히지지합니다 그러나 몇 가지 단점이나 도전과 생각하는 방법에 대해 훌륭한 이야기를 해줍니다 그들에 대해 내가 부르고 싶었던 일부

RESTful API보다 확실히 복잡한가요? 저는 그것이 GraphQL에 대한 명백한 다이빙이라고 생각합니다 ORM으로 작업하고 있다면, 그들은 GraphQL을 처리 할 준비가되어 있지 않습니다 그들 자신 데이터 액세스 계층을 직접 작성하는 경우 문제가 없을 수 있습니다 그러나 상자 ORM으로 작업하면 좋은 지원이되지 않을 수도 있습니다

나는 아직 말한다 이것을 바꾸려는 도구가 있습니다 캐싱은 훨씬 더 어렵습니다 특히 클라이언트 측 나는 아폴론에 대해 언급했다

그리고 아폴로는 큰 특징 중 하나이고 그 클라이언트 측 캐싱을 다루기 때문에 존재합니다 하나의 리소스 집합을 요청하는 RESTFUL API와 달리 클라이언트 측 캐시에서 GraphQL을 요청하고 저장합니다 이러한 유형은 중첩 될 수 있습니다 여러 개의 다른 필드 그리고 효율적으로 캐시 할 수 있기를 원한다면 그렇게 할 필요가 없습니다

쿼리를 계속 반복하면,이를 처리 할 수있는 풍부한 라이브러리가 필요합니다 아폴로는 정말 잘합니다 그러나 당신은 그것을 얻지 않을 것입니다 평범한 상자에서 꺼내지 마십시오 서버에 대한 쿼리

응용 프로그램 메트릭은 훨씬 더 복잡합니다 RESTFUL API에서 실적이 저조한 엔드 포인트를 발견했다면 그게 어디 있니? 그러나 실적이 저조한 분야는 실적인지 확인하기위한 도구가 필요합니다 GraphQL 응용 프로그램의 문제 다시 말하지만, 지금 이것을 지원하는 데 훌륭한 역할을하는 APM 도구가 있습니다 GraphQL이 점점 더 성숙되고 대중화되면서, 우리는 점점 더 많은 도구를 보게 될 것입니다

그것을 지원하십시오 그러나 그것은 분명히 더 복잡한 것입니다 GraphQL이 항상 API를위한 최선의 선택은 아닙니다 무엇보다도 유스 케이스, 해결하려는 문제를 고려하여 절충하고 결정을 내린다 도구 상자에있는 다른 도구라고 생각합니다

언제 우리가 언제 사용하는지 생각하는 것이 유용합니다 우리가 어떻게 데이터를 구조화하고 어떻게 API를 구조화하는지 생각합니다 GraphQL을 사용하면 클라이언트와 서버간에보다 효율적인 쿼리를보다 쉽게 ​​만들 수 있습니다 더 중요한 것은 API에 대해 생각할 수있는 새로운 방법을 제공한다는 것입니다 애플리케이션 데이터를 어떻게 구성하고 있는지 생각해 볼 수있는 새로운 방법

나는 그것을 시도하는 것이 좋습니다 함께 일하는 것은 재미 있습니다 그리고 상충 관계가 무엇인지, 어떻게 해결할 수 있는지 이해하십시오 당신이 직면하고있는 문제들 고맙습니다

[박수] 어제 준 튜토리얼에 대한 링크입니다 거기에 연습의 무리가 당신이 통과 할 수 있습니다 기본적으로 API에 대한 이야기를 나눴습니다 GitHub에 있는데 결함이 있습니다 로컬에서 실행할 필요는 없습니다

당신이 할 수있는 VM에서 실행할 수 있습니다 자, 몇 분의 질문이 있습니다 네? 관객 : [마이크에서 멀리] 앤드류 : 네 그래서, 질문은, 당신이 당신의 데이터베이스를 디자인 할 때 당신이 생각할 때, 어떤 쿼리가 그것에 대해 실행될 것인지에 대한 정보를 제공합니다 그리고 GraphQL을 사용하면 예측이 어려울 수도 있고 약간있을 수도 있습니다

데이터베이스를 설계하는 것과는 다른 위험이나 도전이 될까요? 나는 그것이라고 생각한다 한 가지 유의할 점은, GraphQL은 데이터베이스를 태양이 접근 할 수 있도록 언급 한 데이터베이스 함수들, 튜토리얼에있는 것들은 실제로 데이터베이스를 사용합니다 후드 아래에서 어떻게 작동 하는지를 보여줄 수 있습니다 어떤 쿼리를 작성하여 어떤 쿼리를 만들 수 있는지 알 수 있습니다

이제는 당신이 더 엄격한 경우에 그들이있는 것과 같은 방식으로 실행되지 않을 수도 있습니다 엄격한 종류의 REST 엔드 포인트가 있습니다 그리고 그것은 ORM과 비슷한 도전 과제를 제시합니다 그리하여 아마도 GraphQL과 비슷한 문제에 직면하게 될 것입니다 확실한 방법은 확실합니다

이를 완화하기 위해 취할 수있는 접근 방법이 있습니다 이러한 데이터 액세스 레이어가 어떤 종류인지에 대해 생각할 필요가 있습니다 세워짐 당신은 확실히 비슷한 문제를 겪고 있습니다 어쩌면 데이터베이스에 전혀 타격을 가하지 않을 수도 있습니다

어쩌면 당신은 다른 서비스를 치고 있을지도 모릅니다 당신은 거기에 다른 도전을해야 할 것입니다 우리는 종종 우리가 만들고있는 쿼리의 수와 비용이 많이 드는 것에 대해 생각하기를 원합니다 그럴 수도 있습니다 그리고 그것은 그것이 중요하다고 생각합니다

네? 청중 : [마이크에서 멀리 떨어진 곳] ANDREW : 예, 대부분의 GraphQL 패턴 또는 권장 사항 그 곳이 어디서 살 필요가 있는지에 대해 강요 당하지 않습니다 그러나 그들은 일반적으로 그것이 당신의 결의에 있어서는 안된다고 말합니다 일반적으로 리졸버 뒤에있는 모델 계층에있을 것입니다 해당 확인자가 데이터베이스에 바로가는 대신 쿼리를 인라이닝하는 대신, 회의에 대한 액세스 권한을 주거나 회의를 다시 보낼 수있는 방법이있을 수 있습니다 내가 필요한 것

그리고 나는이 사용자를 위해 나를 다시 보내 주겠다고 말할 수 있습니다 맞습니까? 이 사용자가 무엇을 볼 수 있는지 압니다 그리고 나서 그것을 통과 할 수 있습니다 그것은 사용자가 누구인지, 그리고 사용자가 액세스 권한을 가진 인증 표시입니다 to는 다른 레이어에서 처리 될 수 있습니다

GraphQL만이 유일한 계층이 아닐 수도 있습니다 API에서 바로 사용하지 마십시오 이것이 바로 GraphQL에 대한 이론이 아닙니다 관객 : [마이크에서 멀리] 앤드류 : 네 그래, 나는 Symfony 측에 어디에 있는지 익숙하지 않다

나는 지금 당장 위대한 답을 줄 수 없을 것입니다 Symfony 컴포넌트가 GraphQL을 지원하기 위해 GraphQL PHP 라이브러리를 사용하고 있다는 것을 알고 있습니다 따라서 Webonyx는 사용하고있는 가장 낮은 수준의 라이브러리입니다 그리고 그 위에 몇 개의 다른 도서관이 있습니다 Symfony와 통합 할 때 해당 라이브러리가하는 일을 확인해 보는 것이 좋습니다

우수한 네 관객 : [마이크에서 멀리] 앤드류 : 네 네 나는 그렇게 생각한다

문제는 전체 애플리케이션을 설계하기위한 모범 사례가 GraphQL API가있는 PHP 하나는 그것이 당신이 사용하고있는 프레임 워크에 달려 있다고 생각합니다 나는 거기에 너무 많은 세부 사항을 들어가기를 원하지 않는다 제 생각에는 일반적으로 GraphQL 끝점을 컨트롤러로 생각할 수 있습니다 그리고 아마 결정자는 카테고리에 들어갈 것입니다

그것은 틀림없이 금형을 확실히 끊습니다 하지만 RESTful 엔드 포인트와 많이 다르다고 생각하지 않습니다 모델 액세스 레이어에 연결합니다 별로 다를 것이 없습니다 그냥 다른 방법

애플리케이션에 GraphQL 및 RESTFUL API가 모두있을 수 있습니다 그리고 GitHub API는 RESTFUL과 GraphQL API를 가지고 있다고 생각합니다 여러 클라이언트로 작업하는 경우 어떤 의미가있을 수 있습니다 그 사람들이 나란히 앉아있는 것을 볼 수있었습니다 차이점은 당신이 GraphQL을위한 다중 종단점을 가지지 않을 것이라는 것입니다

당신은 그것을 가질 것입니다 시원한 나는 시간이 없다고 생각한다 고마워, 모두들 [박수]

Fast Web Scraping With ReactPHP #2: Saving to MySQL

이전 튜토리얼에서는 Pexelscom에서 데이터를 추출하는 스크래퍼를 만들었습니다

다음 단계는이 스크랩 된 데이터를 데이터베이스에 저장하는 것입니다 우리는 MySQL을 사용할 것입니다 여기에 빈 데이터베이스가 있습니다 이제 Image 객체를 저장할 테이블을 작성해 보겠습니다 새 테이블, 이름 "이미지"

열 이드, pexelscom의 ID가됩니다 따라서 부호없는 정수와 기본 키가됩니다 그런 다음 제목은 문자열, json은 태그 목록, 해상도는 문자열로 나타납니다

끝난 여기 테이블이있다 그런 다음 패키지를 가져와야합니다 ReactPHP / MySQL의 친구들 그것은 ReactPHP를위한 비동기 MySQL 클라이언트입니다

설치로 이동하십시오 05,이 라이브러리를 사용할 때 여전히 불안정합니다 염두에 두십시오 이 줄을 복사하고 작곡가를 실행하십시오

라이브러리가 설치되고 시작됩니다 이전에 우리는 여기에서 멈췄다 메서드 scrape ()는 Image 객체의 배열로 해결되는 약속을 반환합니다 이제 우리는 이러한 객체를 데이터베이스에 저장하려고합니다 라이브러리를 살펴 보겠습니다

빠른 시작 예제 우리는 공장을 만들어야합니다 그런 다음이 팩토리에 연결을 요청하십시오 그리고 쿼리하십시오 승인

팩토리를 생성합니다 그런 다음 게으른 연결을 만듭니다 다음으로 구성되는 연결 문자열을 제공하십시오 : 사용자 이름 루트, 암호 없음, localhost 그리고 "긁는 것"이라고 불리는 데이터베이스 게으른 연결의 주된 아이디어는 내부적으로 기본 데이터베이스를 느리게 생성한다는 것입니다 첫 번째 요청이 호출되면 요청시에만 연결하고 모든 요청을 대기중인 모든 대기열에 기본 연결이 준비 될 때까지 요청합니다 이제 여기서 결과를 인쇄하는 대신 약속이 해결되면 저장하려고 시도 할 수 있습니다

연결을 사용하십시오 그래서 우리는 요청이 필요합니다 이미지에 삽입 : ID, 제목, 태그, 해상도 및 소스 그리고 그들의 가치를위한 자리 표시 자 그런 다음 각 이미지에 대해 매개 변수를 수집하고 요청을 수행합니다

이미지 객체에서 배열을 만듭니다 ID, 제목, 태그, 해상도 및 소스입니다 그런 다음 connection-> query ()를 호출하고 SQL 문자열에 params 배열을 제공합니다 메소드 query ()는 QueryResult 인스턴스로 해결되는 약속을 리턴합니다 그냥 인쇄 해보자

클래스 이름을 가져오고 var_dump () 함수를 호출하십시오 그리고 요청이 실패하면 약속은 예외로 거부됩니다 우리는 또한 그것을 인쇄합니다 그런데이 배열을 Image 객체로 옮길 수 있습니다 바닥으로 가라

메소드 toArray ()를 작성하여 여기에 배치하십시오 변수 이름을 고치면 $ image가 $ this로 바뀝니다 그리고 여기에서는 array 대신 $ image-> toArray ()를 호출합니다 좋아 보인다 작동하는지 확인합시다

스크립트를 실행하십시오 아, 실패합니다 : 열이 값 수와 일치하지 않습니다 어디 보자 이 쿼리는 괜찮아 보입니다 태그에 대해서는 json 열이 있으므로이 값을 인코딩해야합니다

다시 실행하면 두 개의 QueryResult 객체가 인쇄됩니다 그런 다음 테이블을 열면 여기에 스크랩 한 데이터가 있습니다 검색어에 대한 몇 마디 당신이 미가공 요청을 수행하고있는 것처럼 보입니다 여기에 합격 한 모든 것이 배치 될 것입니다

쿼리에 바로 들어가십시오 그래서 SQL 삽입을위한 공간이있는 것처럼 보입니다 걱정하지 마라 우리가 쿼리를 실행할 때 모든 제공된 매개 변수가 이스케이프 처리된다 여기있어

파일 질의, 메소드 resolveValueForSql () 예를 들어 문자열이 있으면이 문자로 이스케이프 처리됩니다 따라서 값을 제공하고 SQL 주입을 두려워하지 않아도됩니다 그리고 우리는 질의를 계속합니다 동일한 데이터를 삽입하고 어떤 일이 일어나는지 보도록하겠습니다

기본 키에 대한 중복 항목이있는 예외가 있습니다 이제 쿼리를 수행하는 방법을 알게되었으므로 스크레이퍼를 계속 사용하십시오 이 원시 열쇠를 여기에두고 싶지 않으므로 저장소를 추출하고이 데이터베이스 관련 항목을 이동해 봅시다 거기에 논리 생성자에서 루프와 연결 문자열을 허용하는 새 클래스를 만듭니다

게으른 연결을 만들어 개인 속성으로 저장하십시오 save () 메서드를 만듭니다 Image 객체의 배열을 받아들이고 저장합니다 메인 스크립트를 엽니 다 여기에서 쿼리 로직을 이동합니다

복사 및 붙여 넣기 연결 속성을 수정하고 클래스 이름을 가져옵니다 끝난 주 스크립트로 다시 이동하십시오 여기서는 연결 및 원시 쿼리를 사용하는 대신 저장소 개체를 만듭니다

그런 다음이 객체를 사용하여 스크랩 한 이미지를 저장하십시오 생성자는 루프와 연결 문자열을 허용합니다 콜백 내부에서는 모든 것을 $ storage-> save ()라는 단일 호출로 대체합니다 실행 해 봅시다 그러나 먼저 표를 지우십시오

예, 여기에 두 개의 레코드가 있지만 스크립트가 계속 실행 중입니다 왜? 우리의 게으른 연결은 여전히 ​​열려 있습니다 모든 이미지가 저장되면 닫아야합니다 자, Storage 클래스를 열고 quit () 메소드를 생성 해 봅시다 왜 그만 둘까요? 지연 연결에는 close () 및 quit ()의 두 가지 메소드가 있습니다

차이점은 다음과 같습니다 method close ()는 연결이 보류중인 모든 요청을 취소하도록합니다 quit ()가 보류중인 모든 쿼리가 실행될 때까지 대기합니다 우리의 경우에는 연결을 종료해야합니다 일단 모든 이미지가 저장되면 우리는 그만 둡니다

해보자 다시 테이블을 비우고 실행하십시오 스크립트가 즉시 종료되는 것을 볼 수 있습니다 즉, 연결이 끊어졌습니다 그리고 데이터가 저장되었습니다

종료하지 말고 연결을 닫으면 어떻게되는지 봅시다 우린 오류가있어 이는 스크립트가 비동기 적으로 실행되기 때문에 발생합니다 여기서 우리는 데이터베이스를 쿼리하지만, 결과를 기다리지 않고 스크립트는 계속됩니다 그리고 close ()를 호출하면 quires가 여전히 실행됩니다

close () 메소드는 그것들을 인터럽트하고 에러가 발생합니다 그것을 다시 종료하십시오 우리가 한 번 더 스크립트를 실행하면 중복되는 기본 키에 오류가 발생했습니다 이를 고치기 위해 우리는 그러한 id를 가진 레코드가 존재하는지 검사 할 수 있고 존재한다면 그것을 건너 뛸 수 있습니다

새 private 메소드를 만듭니다 () 아니면 isNotStored () 일 수도 있습니다 그것은 약속을 반환하고 지정된 id를 가진 레코드가 존재하지 않는지 확인합니다 탁자 약속은 새로운 레코드 인 경우 해결되고 이미 저장된 경우 거부됩니다

그래서, 간단한 쿼리 : select by id 그런 다음 QueryResult 객체가 있습니다 resultRows가 0보다 큰 경우 우리는 거부 된 약속을 그렇지 않으면 반환합니다 하나 또는 도우미 함수 reject () 및 resolve ()를 사용할 수 있습니다

FulfilledPromise 및 RejectedPromise를 바꿉니다 요청이 실패하면 예외가 발생하고 메시지가 인쇄됩니다 그런 다음 save () 메서드를 private로 만들고 array 대신 하나의 Image 객체를 허용합니다 루프를 제거하십시오 명시 적 이름 saveIfNotExist ()를 사용하여 새 public 메서드를 만듭니다

그것은 일련의 이미지를 받아 들일 것이고, 반복해서 검사 할 것입니다 :이 이미지가 저장되지 않았 으면 데이터베이스에서 이 이미지를 사용하고 저장합니다 끝난

기본 스크립트를 열고 메소드 이름을 수정하십시오 이제 테이블을 비우고 스크립트를 실행하면 실패 할 것이라고 생각합니다 아 그렇습니다 실패합니다 왜? 여기에 quit () 호출이 있음을 기억하십시오

어떤 연결이 정상적으로 닫힙니다 그러나 우리의 경우에는 select 쿼리를 실행 한 다음 저장소가 종료됩니다 그래서 우리가 삽입 quires 수행하려고하면 연결이 이미 닫혀 있습니다 어떻게 해결할 수 있을까요? 우선이 quit () 호출을 제거하고 모든 것이 작동하는지 확인합니다 예, 이미지는 저장되었지만 스크립트는 계속 실행 중입니다

그리고 60 초 동안 계속 작동 할 것입니다 왜 60 초? 보세요 여기서 저장소에 게으른 연결을 만듭니다 기본적으로 지연 연결은 60 초 동안 유휴 상태가 된 다음 닫힙니다 "유휴"연결이 종료 된 후 다음 요청은 자동으로 새로운 기본 연결

따라서 항상 신선한 연결을 유지할 수 있습니다 우리는 유휴 연결을 원하지 않습니다 우리가 quires로 끝내면, 우리는 그것을 닫습니다 이 경우 연결 문자열에 0 값을 지정할 수 있습니다 패스 유휴 상태는 0입니다

이제 스크립트를 다시 실행하고 테이블을 지우고 실행 한 다음 쿼리가 완료되면 종료합니다 따라서 저장소에서이 quit () 메서드를 제거 할 수 있으므로 더 이상 필요하지 않습니다 이제 저장소를 검토해 보겠습니다 우리는 일련의 이미지를받습니다 그들을 통해 반복하십시오

각 이미지에 대해 새로운 이미지인지 확인합니다 select 쿼리를 실행하고 약속을 반환하십시오 이미지가 데이터베이스에 존재하지 않고 약속이 해결되면 우리는이 이미지를 저장합니다 어쩌면이 루프는 4 단계의 들여 쓰기 수준에서는별로 좋지 않을 것 같지만 여기 괜찮아 연결 문자열에서 우리는 "유휴 상태가 0 임"을 제공했습니다

이는 일단 우리가 quieries로 연결이 완료됩니다 지금부터는 이미지에 대한 필수 데이터를 긁어 낸 다음 모든 정보를 긁어 낸다 -이 데이터를 데이터베이스에 저장합니다

iPhone SE2 with A13 Processor and Wi-Fi 6!🤔👍😊

애플은 새로운 프로세서 개발을 위해 수년간 대만 반도체 (TSMC)와 협력 해왔다 아이폰을위한, 그리고 올해는 패턴이 바뀔 것 같지 않다

2018 년 8 월에 업계 분석가들은 애플이 프로세서 공급 계약을 맺었다 고보고했다 TSMC와 독점적으로 차세대 iPhone SE2를 위해 Apple A13에 관해서는 지금까지는 거의 알려지지 않았습니다 단, 7-nm 프로세스에서 수행된다는 점만 다릅니다 자외선 리소그래피와 함께 애플 A12보다 더 강력 할 것입니다

iPhone XS 및 XS Max 전반적인 성능 및 그래픽 성능의 표준 향상 외에도 우리는 애플 신경 엔진을 이용한 기계 학습의 또 다른 도약 차세대 AR 애플리케이션의 운영 아이폰 SE2는 와이파이 6을 장착 할 예정이지만, 일부 제조업체는 처음 출시 할 예정이다 올해 삼성, LG, 원 플러스 등 5 세대 스마트 폰이 이미 판매 중이다 애플처럼 혁신을 도입하기 위해 다시 서두르지 않을 것이다

블룸버그 보고서에 따르면 우리는 2020 년까지 iPhone에서 5G 지원을 거의 볼 수 없다고합니다 2019 년에 운영자가 방금 배포하기 시작했기 때문에이를 긴요하다고 부르기는 어렵습니다 5G 인프라를 지원하므로 스마트 폰이 어디서나 5G를 포착 할 수는 없습니다 이러한 네트워크에서 작업 할 수 있습니다 반면에, iPhone SE2 2019는 Wi-Fi 6를 지원합니다

지금은 인터넷이고, 러시아 통신 사업자가 마침내 5G 네트워크를 준비 할 때가 아닙니다

IPhone SE 2 Compare with iPhone XS in Size

컴팩트 아이폰 se – 또는 아이폰 12와 아이폰 10s 크기 비교 소형 스마트 폰의 팬은 그것을 사랑합니다 내부 은행은 개념적으로 만들 수 있습니다 렌더링은 2020 모델의 iPhone 12의 크기와 아이폰 10s 비교는 그 디자인 된 주력 애플이 내년에 iPhone 10 및 iPhone 10의 스킨에 비해 눈에 띄게 작을 것입니다

권위있는 분석가의 최신 예측을 기반으로 렌더링을 만들었습니다 Minch는 이전에 전문가가 2020 년에 애플이 54 아이폰 10과 아이폰 10의 디스플레이 비교를위한 인치 아이폰 12 58 인치 대각선이 9 월 출시 준비 년 아이폰 11은 58 인치 디스플레이 애플을 첫 번째받을 것이다

시간은 디스플레이의 대각선을 물리적 치수로 축소합니다 디자이너가 만든 비교에 따르면 주력 스마트 폰은 iPhone 12와 이전 스마트 폰 간의 크기 차이 중요하다 또한 렌더링 65 인치 아이폰 테니스 최대 및 6 비교 싸움으로 미래가 2020 년에 발표 된 7 인치 iPhone 12 최대 포인트 기함은 그것의 전임자보다는 경미하게 더 크다

Iphone 6 With IOS 13 Updated

아이폰 6에 출시 된 OS 13은 계정에서 6을 쓴다 별명 밤에 트위스트 애호가들을 업데이트했습니다

타이거 FTW, iOS 최초 베타 버전 출시 성공 13 아이폰 6에 대한 미래에 그는 수정 된 IOS 13을 발표 할 예정이다 모든 사용자를 위해 iPhone 6 용 펌웨어 업데이트 야간 등산객 FTW는 iOS 13을 iphone 6에 설치하지 않았습니다 친구를 사기위한 장난이었습니다 지금까지 사용자가 IPSW 파일 펌웨어 iOS 13 베타 1 수정 작업 6 일 동안 아이폰 6에서 그는 펌웨어에 심각한 버그를 발견했다 지원되지 않는 기기에 iOS 13을 설치할 수있게되었습니다

사용자는 발견 된 설치 방법에 대한 세부 정보를 다음과 같이 공개하지 않았습니다 증거 밤 타이거 FTW는 아이폰 6을 보여주는 사진을 실었다 iOS 13 야간 등산가 FTW는 iOS 13의 특별 버전을 출시 할 것을 약속했습니다 가까운 장래에 iPhone 용 펌웨어를 출시 할 때 그는 언제 대중과 펌웨어를 공유해야한다 버그를 수정하면 최종 버전이 출시 된 후에 사용할 수 없습니다

iOS 13의 열광 자 발견 된 버그는 iPhone 5s 테스트에서 작동하지 않습니다 Apple의 결함을 사용하여 iOS 5에 iOS 13을 설치하면 버그가 작동하지 않습니다 애플 커뮤니티에서 아이폰 6과 아이폰 6을 위해 독점적으로 일한다 타이거 FTW가 모호하게 만난 메시지 밤에 일부 사용자는 성명서에 반응했습니다 iPhone 6에 iOS 13을 성공적으로 설치 한 것에 대해 회의적인 태도로 잘 알려진 해커가 iOS 11의 탈옥을 수행 한 20w 인디를 iOS 12는 또한 다음과 같은 말에 불신을 표했습니다

이 경우 알려지지 않은 사용자는 개발자가 타이거 FTW에서 iOS를 설치하는 방법이 있다면 밤에 보낸 메시지를 따르지 않을 것입니다 아이폰 6에 13 우리는 즉시 그것에 대해 독자에게 알립니다 나타납니다

6 How to create MySQL Database and connect with codeigniter 3

안녕하세요, 내 초고속 자습서에 오신 것을 환영합니다이 자습서에서는 이 튜토리얼에서는 mysql에서 테이블을 생성하는 방법을 보여줄 것이다

codeigniter에 mysql 데이터베이스를 연결한다 귀하의 xampp 제어판에서, 당신은 아파치에서 mysql을 보았을 것입니다 이 튜토리얼에서는 mysql 모니터 용 sqlyog를 사용하는데 유료 소프트웨어이지만 무료로 원한다면, HeidiSQL을 다운로드 할 수 있습니다 강력한 MySQL 관리자 그냥 마우스 오른쪽 버튼으로 클릭하고 데이터베이스를 만들려면, 데이터베이스 이름에 대해, 나는 그것의 이름을 배우고, 그리고 지금 테이블을 위해 나는 3 개의 칼럼을 필요로합니다

그리고 그것들은 book_id, title, price입니다 나는 book_id를위한 정수가 필요하다 추가 디자인은 id에 대한 자동 증가를 생성 할 것이다 varchar의 title은 정수입니다 이제 설치 후 테이블을 book_master로 이름을 지정합니다

운동을 위해 데이터를 삽입하는 기본 쿼리를 보여 드리겠습니다 book_id에 autoincrement를 사용 했으므로이 열에 데이터를 채울 필요가 없으며 자동으로 데이터가 설정됩니다 당분간, 만약 내가 이렇게 임의의 데이터로 값을 삽입한다면, 그것은 성공에 불과합니다 그 후에 우리는 다른 데이터로 데이터를 검사 할 것입니다 당신이이 단계를 수행했다는 가정하에, 우리는 프로젝트로 돌아 가야하고 간단히 애플리케이션 폴더 아래 config 폴더로 갈 수 있습니다

그냥 databasephp를 찾으려고 노력하십시오 localserver를 사용하기 때문에 여기에 많은 데이터 설정을 볼 수 있으며, 호스트 명은 localhost로 설정할 수 있습니다 사용자 이름에 대해 xampp 설치 중에 mysql 데이터를 설정하지 않으면 루트 및 빈 암호로 설정해야합니다 데이터베이스 이름을 배우게됩니다

그건 mysql 데이터베이스를 만들고 codeigniter에 연결하는 방법이다 나는 그것이이 튜토리얼을 위해 충분하다고 생각한다 다른 동영상을 보려면 내 채널을 구독하십시오 거기서 보자