Fractal 문서 (dingo 의 transformer 를 보고)
Fractal 은 복잡 한 데이터 출력 에 스타일 과 전환 층 을 제공 합 니 다.
보통 API 를 할 때 데이터베이스 에서 데 이 터 를 꺼 내 서 json 으로 클 라 이언 트 에 게 전달 합 니 다. 중요 하지 않 은 api 에 대해 서 는 이렇게 할 수 있 지만 공공 이나 모 바 일 프로그램 에 주면 불필요 한 데이터 나 형식 이 다른 데이터 출력 이 발생 합 니 다.
목표.
간단 한 예
이 열 은 아래 의 물건 을 함께 놓 는 것 이다. 현실 개발 에서 우 리 는 Manage 초기 화, 데이터 집합, json 전환 을 프로젝트 에 개방 할 것 이다.
class UsersController extends BaseController
{
public function index()
{
$fractal = new FractalManager();
$books = [
[
'id' => '1',
'title' => 'Hogfather',
'yr' => '1998',
'author_name' => 'Philip K Dick',
'author_email' => '[email protected]',
],
[
'id' => '2',
'title' => 'Game Of Kill Everyone',
'yr' => '2014',
'author_name' => 'George R. R. Satan',
'author_email' => '[email protected]',
]
];
$resource = new FractalCollection($books, function(array $book) {
return [
'id' => (int) $book['id'],
'title' => $book['title'],
'year' => (int) $book['yr'],
'author' => [
'name' => $book['author_name'],
'email' => $book['author_email'],
],
'links' => [
[
'rel' => 'self',
'uri' => '/books/'.$book['id'],
]
]
];
});
$array = $fractal->createData($resource)->toArray();
dd($array);
cursor: 페이지 에 사 용 된 것 은 데이터베이스 에 몇 개의 데이터 가 있 는 지 계산 하지 않 습 니 다. 요청 을 통 해 다음 페이지 가 있 는 지 계속 확인 하고 cursor 를 통 해 이 표 시 를 합 니 다. 없 으 면 404 로 돌아 갑 니 다. 페이지 가 끝 났 음 을 의미 합 니 다.
Include: 데 이 터 는 일반적으로 관련 이 있 습 니 다. 예 를 들 어 사용자 가 댓 글 이 있 고 댓 글 이 댓 글 이 있 으 며 댓 글 은 댓 글 에 속 합 니 다. restful apis 에서 데이터 관련 은 모두 포 함 됩 니 다. 예 를 들 어 사용자 의 댓 글 은 사용자 include post () 함 수 를 통 해 사용자 에 게 돌아 갈 때 해당 사용자 와 관련 된 게시 물 을 포함 할 수 있 습 니 다.
Manager Fractal 에는 Manager 라 는 종류 가 있 는데 주로 데 이 터 를 어떤 형식 으로 포맷 해 야 하 는 지, json, Yaml 등 을 관리 합 니 다.
Pagination Pagination Pagination is the process of dividing content into pages, which in relation to Fractal is done in two alternative ways: Cursors and Paginators.
페이지 를 처리 하 는 데 사용 되 는 아주 멋 진 Paginator 는 데이터베이스 에 몇 개의 데이터 가 있 는 지 계산 하고 meta 에 'paginator' 를 추가 하 며 적당 할 때 next / previous 를 포함 합 니 다.
resource 는 대상 입 니 다. 어떤 기본 데 이 터 를 포함 하 는 지 transformer 를 첨부 합 니 다. 최종 적 으로 직렬 화 되 고 출력 됩 니 다.
Serializer 는 Transformer 의 종 류 를 규정된 형식 에 따라 직렬 화 합 니 다. 일반적으로 가장 많이 사용 되 는 형식 은 json 과 HAL 입 니 다. 예 를 들 어 트 위 터, 페 이 스 북, 구 글 은 데이터 전송 에 관 한 사용자 정의 형식 을 가지 고 있 습 니 다.
transformer 는 하나의 클래스 일 수도 있 고 익명 함수 일 수도 있 습 니 다. 데 이 터 를 처리 하여 원 하 는 데이터 가 되 고 직렬 화 될 수 있 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.