Z객체에 대한 추상 위키백과/오류 메시지
현재 위키에 저장된 JSON 직렬화에서 위키람다 확장의 PHP 코드 내에서 전체 Z객체를 평가, 구성 및 검증합니다.
그 이유는 크게 두 가지입니다:
- JSON 직렬화의 유효성을 검사합니다. 직렬화가 유효한 객체를 나타내지 않으면 객체 생성이 실패합니다. 이렇게 하면 유효하지 않은 콘텐츠가 위키에 들어가는 것을 방지할 수 있습니다. 즉, 모든 콘텐츠를 유효한 것으로 취급하고 특정 조건이 성립한다고 가정할 수 있습니다.
- 레이블, 나중에 별칭, 특정 보기를 가져오는 것과 같이 위키가 수행해야 하는 일부 작업의 경우 객체는 특정 조건을 충족*해야* 합니다. 그렇지 않으면 위키가 실제로 검색이나 표시와 같은 특정 기본 기능을 제공할 수 없습니다.
여기에는 여러 단점이 있습니다:
- 우리는 유형과 유효성을 포함한 대부분의 위키가 결국 커뮤니티에서 편집할 수 있을 것으로 기대합니다. 이것은 유효한 것과 그렇지 않은 것이 시간이 지남에 따라 변하고 어떤 시점에서 유효했던 것이 다른 시점에서 아닐 수도 있음을 의미합니다. 유효하지 않은 콘텐츠에 대처해야 합니다. 적어도 이전 버전에서는 콘텐츠가 궁극적으로 무효화되기 때문입니다. 그렇지 않으면 이전 버전의 기록이나 보기가 깨지는 것처럼 위키의 기본 기능이 손상될 수 있습니다.
- 유효성 검사는 특히 사용자 제공 유형 정의 및 유효성 검사 기능을 사용하여 유효성을 검사하는 경우 매우 비쌀 수 있습니다.
다음은 문제 해결을 위한 제안입니다:
- 임의의 Z객체에 대한 올바른 형식의 JSON 표현을 보유하지만 해당 Z객체 유형의 완전한 PHP 미러가 아닌 새로운 PHP 클래스(현재 ZRecord와 유사)를 소개합니다.
- 위키가 작동하는 데 필요한 경우가 아니면 Z객체에서 전체 PHP 객체를 구성하지 않습니다. 우리가 필요로 하는 Z객체도 부분적으로만 구성합니다. 위키가 작동하는 데 실제로 필요한 부분입니다. 이러한 각 PHP 객체에는 자체적으로 잘 구성된 JSON 표현을 보유하는 구성원도 있습니다.
- 위키에 저장된 모든 것은 잘 구성되고 정규화되도록 보장됩니다.
- 위키에 저장된 모든 것은 양도할 수 없는 참을 따르도록 보장됩니다; 이들은 위키에 하드코딩되어 있으며 위키에서 변경할 수 없습니다. 여기에는 모든 객체가 Z2/영구 객체여야 하고 모든 Z2에 레이블이 있다는 등이 포함됩니다.
- 3번과 4번 모두 장기적으로 안정적일 것입니다.
- 3과 4를 넘어서는 다른 검증은 하지 않습니다.
- 저장되거나 미리보기된 콘텐츠를 표시할 때 유효성 검사를 수행하고 오류를 표시합니다.
- 저장하기 전에 기여자는 유효성 검사를 미리 보거나 호출하거나 유효성 검사가 자동으로 호출되고 기여자는 오류 목록을 볼 수 있습니다. 오류가 있는 경우 "게시" 버튼이 회색으로 표시되거나 표시되지 않을 수 있습니다.
- 그러나 API가 저장을 위해 호출되면 유효성 검사 오류에 직면하더라도 그렇게 할 것입니다.
- 잘못된 Z객체는 *항상* 특정 뷰어와 편집기가 아닌 일반 뷰어 및 편집기를 사용합니다(특정 뷰어에 대한 요구 사항이 위반될 수 있음).
- 일반 뷰어는 모든 유효성 검사 오류(있는 경우) 목록도 표시합니다.