2009-10-26 5 views
5

나는 간단한 블로그를 만들고 있는데 이것에 대해 수업을 사용하고 싶다. 이 일을하는 가장 좋은 방법이 무엇인지 궁금합니다. 지금까지 내가 볼 수있는 3 가지 방법이 있습니다. 링크, 게시물 및 댓글이있는 수업을 만들었습니다. 단일 배열에서이 모든 데이터를 반환 할 때의 문제점은 한 번만 울려 야하는 데이터가 내가 반환 한 행만큼 반복되는 것입니다. 어떤 사람들은 이것이 정확하다는 것과 나는 모든 것을 하나의 배열로 가져야한다고 말할 것입니다. 저는 이것이 이것이 올바른 길임을 확신하지 못합니다.PHP 클래스 설계. 올바른 방법

여러분 중 일부가이 3 가지를 처리하기 위해 클래스를 어떻게 디자인 할 수 있는지에 관해서는 정말 감사하겠습니다. 지금까지 클래스에 필요한 유일한 것은 데이터베이스에 대한 링크입니다. 내가 사용해야하는 다른 회원은 내게 불분명하다. 다시 말하지만, 어떻게해야하는지에 대한 관점을 얻고 싶습니다.

감사합니다, 존


OK, 그래서 나는이 같은 3 가지 방법 말을했다 경우 :

var $db; 

function GetPosts() { 
//posts 
} 

function GetComments() { 
// blog comments 
} 

function GetLinks() { 
// links for the blog 
} 

무슨 사람이 사용하는 것과 회원의 일부가 될 수 있는가?

또한 다른 방법을 호출하는 메서드가 있어야하는지 궁금합니다. 한 가지 공개 방법을 사용하고 다른 모든 방법을 비공개로 설정하십시오. public 메서드는 private 메서드를 호출하고 해당 값을 반환합니다. 이게 낫겠 니?

+0

무료 오픈 소스 블로그 플랫폼을 통해 자신 만의 일을하고 싶습니까? 어떤 특별한 기능을 제안합니까? – jldupont

+3

사실 블로그 게시물과 코멘트 외에는 아무 것도 없습니다. 프로그래밍 측면을 즐기는 것만으로도 충분합니다. :) – JohnB

+2

나는 그의 목적이 다른 사람들이 사용할 블로깅 소프트웨어를 만드는 것 이상으로 PHP와 디자인에 대해 배우는 것이라고 생각한다. – marr75

답변

0

CakePHP은 널리 채택 된 CakePHP 프레임 워크를 사용하여 tutorial on creating a blog입니다. 블로그를 프로그래밍하면서 새로운 프레임 워크를 배우는 데 관심이 있다면 그렇게하는 것이 좋습니다.

entite (링크, 댓글 게시)로드 또는 저장 (지속) 또는 지속성 프레임 워크 (예 : Doctrine ORM for PHP)를 처리하기위한 클래스를 만드는 것이 좋지만 모든 것을 직접 코딩하고 싶습니다.

문제는 여러 가지 방법으로 설명한 기능을 구현할 수 있다는 것입니다. 보편적 인 대답이 없습니다. 몇 가지 코드를 제출하면 구체적인 조언을하는 것이 더 쉽습니다.

+0

안녕하세요 Gergely Orosz, 답변 해 주셔서 감사합니다. 이미 여러 가지 프레임 워크를 시도했지만 그다지 신경 쓰지는 않습니다. 어쨌든 나에게 그것은 스스로하는 즐거움을 얻는다. 나는 도우미 기능이 많다는 것을 알고 있지만 그 프레임 워크의 뒤에 무엇이 계속되는지 전혀 모르는 다른 "프로그래머"를 만났습니다. 나 틀리게하지 말라, 나는기구를 좋아한다. 그러나 나는 inter-workingings를 조금 더 좋아한다. 나는 위의 수업에 몇 가지를 추가 할 것이고, 아마도 당신은 나에게 몇 가지 조언을 해줄 수있을 것이다. 다시 한 번 감사드립니다! – JohnB

1

처음부터 직접 작성하려면 블로그의 각 부분에 대해 별도의 개체 (예 : 게시 개체, 메모 개체, 링크 개체)를 만들어야합니다.

그런 다음 해당 개체가 상호 작용하는 방식 (예 : 게시 개체에 주석 개체 배열이 포함될 수 있음)과 기본 CRUD (작성, 읽기 (가져 오기), 업데이트, 삭제) 작업.

+0

안녕 GSto, 답장을 보내 주셔서 감사합니다. 나는 블로그의 각 부분에 대해 별도의 수업을받는 것에 대해 당신과 동의합니다. 나는 이렇게함으로써 추상적 인 개념을 그대로 유지하는 것이 더 어렵다고 들었습니다. 나는 아직도 이것에 대해 확실하지 않다. 위의 방법에 몇 가지를 추가하고 변경하기 위해 수행 할 작업을 알려줄 수 있습니다. – JohnB

+0

이런 식으로하는 것이 어떻게 추상화를 해칠까요? 나는 모든 것을 처리하는 하나의 블로그 클래스를 가지는 대신이 방법을 유지하는 것이 더 쉬울 것이라고 믿습니다. – GSto

0

달성하고자하는 작업의 세부 사항을 알지 못하지만, 예를 들어 GetPostManager() 메소드가있는 하나의 팩토리 클래스 Blog에 대해 생각해보십시오. PostManager는 게시물을 작성, 편집, 업데이트하고 선택할 수 있습니다. 그래서, $ Blog-> GetPostManager() -> GetPosts ($ datefrom, $ dateto)는 포스트를 찾기 위해 Countable과 Iterator 인터페이스를 구현하는 PostCollection 클래스를 리턴합니다. PostCollection은 PostItem 클래스를 포함하는 배열입니다. PostItem 클래스는 속성 인 데이터베이스에 매핑 할 수있는 간단한 클래스입니다.

+0

감사합니다. FractalizeR. 공장 패턴이 좋게 들립니다. 그래서,이 3 가지 방법으로 수업을 만드는 것은 잘못된 것이라고 말할 수 있습니까? 나는 일을하는 100 가지 이상의 방법이 있다는 것을 알고 있지만, 나는 "최선의"방법을 찾고 있다고 생각합니다. 반드시 가장 쉬운 것은 아닙니다. 나는 내가 그것을 원한다면 궁극적으로 확장 할 수 있어야한다고 생각한다. – JohnB

+0

아니요, 세 가지 방법으로 수업하는 것이 좋습니다 ...하지만 시스템을 연장 할 때까지. 더 많은 기능을 추가해야한다면, 한 가지 클래스가 점점 더 많은 메소드에 의해 과밀화 될 것입니다. 그래서 처음에는 어떤 구조를 만드는 것이 낫다고 생각합니다. 특히 매우 복잡하지 않은 경우. –