나는 Site
객체를 가지고 있지만 사이트에 Page
객체 컬렉션을 저장하는 것이 가장 좋은 방법을 찾아 낼 수 없습니다. 페이지는 계층 적입니다 (웹 사이트 탐색을위한 트리 구조). 나무와 비슷한 페이지 배열에 대해 생각했지만 상호 작용할 수있는 고통이있었습니다. $site->pages[0][3][1]->addContent('<h1>lol</h1>')
. $site->pages['home']->addContent('<p>easier</p>')
과 같은 고유 한 ID가있는 페이지의 편평한 배열을 사용할 수는 있지만 렌더링 탐색시 트리를 어떻게 추출할까요?PHP OOP가 객체 계층 구조로 작업 중
0
A
답변
1
내가 같은 URL을 사용합니다 : 페이지를 표현하기 위해
http://www.example.org/products/electronics/computer/monitors
을 그리고 다음과 같은 코드를 사용
$site->pages['products']['electronics']['computer']['monitors']
당신은 모든 리디렉션하도록 웹 서버를 구성 할 수 있습니다 .php 파일에 요청을 보내면 REQUEST_URI 변수가 폭발하여 URL을 "중단"할 수 있습니다.
0
개체 컬렉션이 필요한 경우 SplObjectStorage
을 확인하십시오.
SplObjectStorage 클래스는 개체에서 데이터로 또는 데이터를 무시하여 개체 집합에서지도를 제공합니다. 이 이중 목적은 객체를 고유하게 식별 할 필요가있는 많은 경우에 유용 할 수 있습니다.
또는 간단한 액세스 가능한 트리 구조가 필요한 경우 SimpleXml 사용을 고려해보십시오. 그렇게하면 사용자 정의 페이지 객체를 쉽게 사용할 수 있습니다. HTML을 추가하는 것 외에 페이지 객체를 사용하는 것보다 훨씬 많은 일을하는 것 같아서 귀하의 경우 가능할 수도 있습니다.
고급 요구를 들어, Composite Design pattern
1
좋은 방법은 고든이 말한대로 복합 패턴을 사용하는 것입니다 참조하십시오. 이것의 간단한 구현 될 수있다 :
interface SitePart { function getName(); } class Page implements SitePart { function Page($name,$content) { ... } function getName() { ... } function getContent() { ... } } class Category implements SitePart { private $parts = array() function Category($name) { ... } function getName() { ... } function add(SitePart $part) { $this->parts[$part->name] = $part } function get($partName) { return $this->parts[$name] } } class Site extends Category { function Site($name) { ... } }계층 구조 및 페이지 작성을위한
: 지금
Site Categ 1 Page 1 Categ 1.1 Categ 2
$site = new Site(); $categ1 = new Category('Categ 1'); $categ11 = new Category('Categ 1.1'); $categ2 = new Category('Categ 2'); $site->add($categ1); $site->add($categ2); $categ1->add($categ11); $categ1->add(new Page('Page 1','Hello world');
을 그리고 예를 들어 1 페이지 검색 :
$page = $site->get('Categ 1')->get('Page 1'); echo $page->getContent();
나는 희망 당신을 도울 것입니다.
관련 문제
- 1. 계층 구조로 IQueryable
- 2. 계층 구조로 표시하는 방법,
- 3. 트리 목록을 계층 구조로 변환
- 4. JQuery와 계층 구조로 메뉴 디자인
- 5. 데이터베이스 디자인 - 여러 개의 객체 유형이 계층 구조로 표시됩니까?
- 6. Linq에서 평면 계층 구조로 페이징하기
- 7. 계층 구조로 사용자 권한 관리
- 8. 열거 형을 클래스 계층 구조로 변환
- 9. 모달 UIViewController에서 뷰 계층 구조로 이동
- 10. MVVM에 계층 적 데이터 구조로 편집을 추가하십시오.
- 11. 플랫 데이터 구조를 계층 구조로 변환 C#
- 12. 우아한 객체 계층
- 13. Jira 작업 계층 구조
- 14. 새로운 (OOP가 아닌) 언어를 배우고 싶습니다
- 15. 탐색 컨트롤러 계층 구조로 돌아갈 때 viewWillAppear을 트리거하는 방법은 무엇입니까?
- 16. C++에서 하나의 컨테이너에 다른 클래스를 계층 구조로 배치
- 17. 미러 된 계층 구조로 된 C++ 이중 디스패치
- 18. 소스 데이터에서 두 개의 개별 계층 구조로 차원을 작성하는 방법
- 19. 단일 차원 배열을 다차원 계층 구조로 만들려면 어떻게해야합니까?
- 20. 나무와 같은 구조로 도우십시오.
- 21. 계층 적 기능/작업 추적 시스템 찾기
- 22. finalize 중 객체 참조
- 23. 객체 PHP
- 24. PHP : 객체
- 25. PHP - 객체
- 26. Android 및 JSP - 객체 작업
- 27. 스레드 작업 변경 중
- 28. 파이썬리스트에서 작업 중
- 29. 건물 작업 중 StackOverflowError 작업 공간
- 30. PHP 도움말 기능 중