내가 배울 수있는 '완벽한'OOP 디자인이있는 오픈 소스 PHP 프로젝트는 무엇입니까? [닫은]


9

나는 OOP의 초보자이며 모범으로 가장 잘 배웁니다.

이 질문은 최고의 코딩 방법을 배우기 위해 어떤 스칼라 오픈 소스 프로젝트를 공부해야 하지만 PHP 에서는 비슷하다고 말할 수 있습니다.

나는 교리 ORM뿐만 아니라 Symfony가 최고의 '아키텍처'(정확한 것이 무엇인지 알지 못할 것입니다)를 들었습니다. 이 프로젝트의 소스 코드를 읽고 사용 된 패턴을 추론하고 새로운 트릭을 배우려고 여러 달을 소비하는 것이 가치가 있습니까?

필자는 Zend의 코드베이스를 분석하고 좋아하는 동일한 수의 웹 페이지를 보았습니다 (필요한 경우 링크를 제공 할 것입니다).

베테랑 OOP 개발자가 기쁨의 눈물을 흘리게 할 다른 프로젝트에 대해 알고 있습니까?

실용성과 사용 범위가 전혀 문제가되지 않는다고 덧붙여 드리겠습니다.

  • 개발자보다 더 훌륭하고 훌륭한 코드베이스를 가진 프로젝트를 선택하십시오.
  • 프로젝트가하는 일을 달성하는 코드를 작성하십시오.
  • 결과를 비교하고 내가 모르는 것을 배우십시오.

기본적으로 학술 관심 코드베이스. 어떤 권장 사항이 있습니까?


4
나는 전문가는 아니지만 PHP에서 OOP가 일반적이거나 반드시 권장되는 것은 아니라고 생각합니다.
asfallows

3
@asfallows 실제로는 그렇습니다. 그러나 PHP 5.3이 출시되면서 상황이 변하고 있으며 언어가 OOP 코딩을 위해 제공하는 모든 새로운 기능을 사용하는 결정적인 기울기가 있습니다.
Aditya MP

3
"완벽한 OOP 디자인"과 같은 것은 없습니다.
Robert Harvey

1
Code Review Stack Exchange의 회원임을 확인했습니다. 광범위하게 사용하면 학습 할 때 가장 유용한 스택 교환입니다. OOP에 대해 배우면서 작성할 코드를보고 토론하고 싶습니다.
yannis

1
@Arkh Harsh. 개인적인 공격을 삼가 해 봅시다. 승인에 동의하지 않는 경우, 시간을내어 잘 작성된 의견을 작성하십시오.

답변:


2

Symfony 2는 아마도 배우기에는 가장 큰 프로젝트 일지 모르지만 꽤 큽니다.

나는 최근 Phrozn (정적 사이트 생성기) 이라는 깔끔하고 작은 오픈 소스 PHP 프로젝트를 발견했습니다 . 코드베이스는 비교적 작기 때문에 꽤 빨리 검사 할 수 있습니다.

최신 정보:

Phrozn은 현대적이며 (PHP 5.3 이상을 사용하며 크게 의존합니다) 확장 가능하고 엄격한 코드 적용 범위를 가지고 있습니다. 또한 Symfony (YAML), Zend (Autoloader), PEAR 및 Twig와 같이 잘 작성된 다른 프로젝트의 코드를 재사용합니다.

OOP는 네임 스페이스를 사용하며 문서화가 잘되어 있습니다. 나는 그것이 완벽하거나 Symfony와 같은 프로젝트와 비교할 수 있다고 말하지는 않지만 한 번 가치가 있습니다.


1
Phrozn의 코드베이스에 대해 좀 더 자세히 설명해 주시겠습니까? 크기가 아닌 공부에 이상적인 이유는 무엇입니까?
yannis

1
@YannisRizos :) 코드는 github에서 찾을 수 있으므로 빠르게 살펴볼 수 있습니다. github.com/farazdagi/phrozn
Christian P

17

글쎄, 개인적으로 Symfony2 확인하십시오 . 그것은 내가 아직 본 최고의 엔드-투-엔드 대형 프로젝트입니다. 그것은 나쁜 부분이 없다고 말하는 것이 아니라 전체적으로 꽤 좋습니다.

이제 젠드 는 중간에 있습니다. 퍼블릭 API를 보면 꽤 좋습니다. WTF 부분이 있지만 대부분은 괜찮습니다. 더 자세히 파기 시작하면 훨씬 더 많은 WTF 코드를 찾을 수 있습니다 ...

무엇을 피해야할까요?

  • CodeIgniter-Fubar MVC 모델
  • Kohana-많은 정적
  • 케이크-PHP 4 객체 시맨틱
  • 드루팔-전혀 OOP
  • 워드 프레스-전혀 OOP 아님

나머지까지는 히트와 누락을 발견 할 수 있습니다. 모든 디자인에 좋고 나쁜 부분이 있습니다. 리튬을 살펴보면 정말 멋진 디자인 컨셉이 있습니다. 그러나 작동하기 위해 많은 fubar 리디렉션과 해커가 있습니다.

그것이 은행에 가져 가야 할 것입니다. 완벽한 디자인은 없습니다. 하나도 찾지 마십시오. 대신, 많은 것을보고 스스로 결정하십시오. 각각을 시도하고, 그들을 끊으려고 노력하십시오. 그것들을 읽는 것만으로 그것들을 이해하려고 노력하십시오.

내 개인적인 의견은 ...


2
symfony2의 경우 +1이지만 더 중요한 것은 전체 커뮤니티 건물입니다. ZF2는 아마도 더 추상적 인 것으로 보이지만 아마 언급 할 가치가 있습니다.
Adrian Schneider

1
symfony2의 경우 +1 그것은 실제로 견고한 코드베이스를 가지고 있으며 다른 언어와 프레임 워크에서 많은 모범 사례를 사용하며 훌륭한 커뮤니티이며 핵심 개발자는 도움이되고 도달 할 수있는 사람들입니다. 개선을 위해 리팩토링 작업을 계속 진행하고 있지만 현재 상태는 프로덕션 환경에 있습니다. Symfony의 제작자 인 Fabien Potencier 는 Symfony 컴포넌트로 프레임 워크를 만드는 방법에 대한 일련의 블로그 게시물 ( fabien.potencier.org )을 보유하고 있습니다. 사람들이 물건을 배우는 데 도움이되는이 게시물을 썼으므로 좋은 출발점이되어야합니다.
Hakan Deryal

symfony2 소스 코드를 읽는 것은 실제로 영감을 주지만 이해하기에는 너무 복잡하지 않습니다. 그러나 "완벽한"OOP "디자인"의 초석이 될 수있는 TDD는 개발되지 않았습니다. 완벽한 디자인이 없기 때문에 디자인을 변경해야하고 테스트가 필요하기 때문입니다.
hakre

2
음, Symfony, Zend 또는 Kohana를 Wordpress 및 Drupal과 심각하게 비교할 수는 없습니다 .
Daniel Ribeiro

감사합니다! Symfony를 다운로드했으며 이해하기 시작합니다. CodeIgniter에 대한 두려움을 확인해 주셔서 감사합니다. SilverStripe IRC에서 "CodeIgniter는 초급 OOP 프레임 워크이며 많은 초보 실수를한다"는 말을 들었습니다. PHP4로 작성하기 시작했지만 광범위하게 리팩토링 할 시간이 없었습니다. 그들이이 언어가 제공하는 모든 위대한 기능을 사용했는지 의심 스럽다. CI를 사용하지 않습니다. 나는 틀을 좋아하고 하늘은 내가 사용했기 때문에 얼마나 많은 프로젝트가 더 쉬워 졌는지 알고 있습니다. 그러나 학습 목적으로는 최고가 아닐 수도 있습니다.
Aditya MP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.