2011-02-11 2 views
6

제목에서 알 수 있듯이 OOP는 처음이지만 PHP에서는 스스로 가르칩니다. 우리는 절차 적 PHP로 구현 된 시스템을 가지고 있습니다. PHP는 크기 때문에 지금은 수정하기가 점점 어려워지고 있습니다. 그래서 PHP OOP에서 다시 작성하여 관리하기 쉽도록 조사하고 있습니다.PHP에서 OOP를 처음 사용하는 경우 클래스 정의에 대한 질문

현재 수업 목록을 작성 중입니다. 우리 학교는 운전 학교를 운영하여 학교, 강사, 학생과 내가 볼 수있는 수업을 모두 대상이 될 수 있도록 수업을 관리합니다. 제 질문은 사실 하나의 학교가 있지만 강사, 학생과 수업이 많기 때문에 프로그램을 만들 때 이러한 객체의 목록을 표시해야합니다. 따라서 그 중 하나의 목록이 자체적으로 수업으로 간주되거나 프로그래밍에 관해서는 각 강사, 학생과 수업에 대한 인스턴스를 만들어야합니다. 아니면 OOP 시스템의 설계에있어 근본적인 것이 빠져 있습니다.

내가 말했듯이, 그냥 OOP를 해결하므로 나와 함께 부드럽게 해주십시오. 지금까지 의견

많은 감사 콜린


감사합니다 모두. 내가 이것에 대해 생각할수록, 적어도 나를 위해 깨달을수록. 내 시스템에있는 무언가의 목록이 하나의 목표라고. 나는 목록에있는 각 항목이 양식이 될 것이라고 상상합니다. 항목을 선택하면 실행중인 새 스크립트가 생성되어 학생, 강사 등의 새로운 인스턴스가 만들어지고 그 결과에 대한 메소드가 실행됩니다. 새로운 인스턴스.

+3

CodeIgniter 및 CakePHP와 같은 일부 MVC 프레임 워크를 확인하십시오. 일단 발을 모델에 젖 혔을 때 (본질적으로 학생, 강사, 수업이 무엇인지), 구조화되고 유지 보수가 가능한 방식으로 쉽게 작업 할 수 있습니다. – coreyward

+2

* (팁) * [엔터프라이즈 응용 프로그램 아키텍처의 패턴] (http://martinfowler.com/eaaCatalog/index.html) – Gordon

+2

* (팁) * [절차 설계를 객체로 변환] (http://sourcemaking.com/refactoring/convert-procedural-design-to-objects) – Gordon

답변

2

이렇게 할 수 있습니다. 그것의 장단점은 장단점입니다. 객체 목록 만 원하면 배열을 만들면됩니다. 그것은 잘 작동합니다.

하나의 클래스 내에 다른 클래스의 객체를 가질 수 있다는 것을 기억하십시오. 따라서 귀하의 학교는 교사의 배열과 학생들의 배열 및 수업의 배열을 가질 수 있습니다.

그러나 목록에 추가 속성이 있으면 해당 항목을 고유 한 권한으로 클래스로 만들 수도 있습니다.

2

OOP는 복잡성을 극복하기 위해 만들어 졌으므로 각 엔티티가 보유하고있는 여러 가지 연산이 여러 개있는 경우 나중에 각 엔티티에 대한로드 클래스를 직접 작성하는 것이 좋습니다. 또한 함수 호출이 서로 독립적이라면 항상 객체를 인스턴스화 할 필요가없는 정적 호출을 만들 수 있습니다.

3

프레임 워크를 잊어 버리면 .... 각자 고유의 뉘앙스가 있습니다. 어떤 사람들은 MVC를 올바르게 따르지도 않았고 (Symfony), 많은 사람들이 매우 빈번한 버전 업데이트 (Zend)로 인해 매우 상충되는 튜토리얼을 가지고 있습니다. OOP 개념에 대한 기본적인 기본 지식을 얻은 다음 언제든지 원하는 프레임 워크를 자세히 배웁니다. 당신은 그 길을 가기로 결심합니다. Zend에 대한 인증을 받았고 Symfony에서 매일 작업하며 CI를 꽤 많이 사용했지만, 개인적으로는 여전히 개인적으로 롤링을 선호합니다. 특히 심하게 짜증 난 응용 프로그램에서 작업하는 경우 특히 그렇습니다.

는 꽤 다시 나를 위해 잘 작동 : http://www.killerphp.com/tutorials/object-oriented-php/

행운을 빕니다. 열린 마음을 가지고 인내심을 가져라. 그것이 많은 시간을 필요로하는 것처럼 보이지만 잠시 후에 그것은 제 2의 천성이되어 실제로 매우 유익합니다.

관련 문제