php - zend - Symfony는 배우기 좋은 프레임 워크입니까?



frameworks (13)

필자는 공개 프레임 워크를 사용하지 않았습니다. 항상 내부 프레임 워크를 사용했습니다. Symfony 에는 많은 자습서와 훌륭한 문서가 있으며 CRUD 에서부터 다국어 처리에 이르기까지 모든 것을 가지고있는 것으로 보입니다.

블로그 *보다 복잡한 웹 사이트를 만드는 것이 좋은 기본 틀이라고 생각하십니까? 그렇지 않은 경우 다른 대안은 무엇입니까?

* 재무 데이터를 관리하기위한 로그인 웹 사이트.


@Daok

Yaml은 스키마를 정의하기 위해 ORM에서만 사용됩니다. 실제로 어떤 행동을 정의하지는 않습니다. Propel은 생성 된 코드를 기반으로하며 schema.yml을 사용하여 모델을 만듭니다.

그것은 OS X에서도 잘 작동합니다.

그것은 또한 꽤 좋은 캐싱 레이어를 가지고 있습니다.


Symfony는 PHP 4에서 작동하지 않습니다. PHP4 전용 응용 프로그램을 호스팅하는 시스템은 Symfony를 사용할 수 없습니다. PHP4가 요구 사항이 아니라면, symfony는 매우 좋은 옵션입니다.


Zend는 우월하지만 실제로는 문서가 부족합니다.


그 프레임 워크를 사용한 많은 프로젝트를 보지 못했기 때문에 아직 확실하지 않습니다 ... CakePHP와 Zend가 더 많이 보입니다.하지만 Symfony는 재미있을 것 같습니다 ...


심포니를 채택하기위한 장애물로 앱의 복잡성을 알 수는 없습니다.

높은 성능을 이유로 심포니를 선택하는 사람은 없을 것이라고 생각하지만, 모든 주요 프레임 워크에서 똑같이 적용됩니다. 우리가 절대적으로 성능 문제가 없다고 말한 것.

Symfony를 Zend와 비교하는 것이 가장 좋지는 않을 것입니다. Symfony는 대단히 완전한 스택 프레임 워크입니다. Symfony 방식으로 작업 할 준비가 필요합니다. 나는 그것을 사용하는 것이 즐겁다는 것을 알았다. 시작하기 전에 공식 심포니 북 (온라인에서 사용 가능)을 완전히 읽는 것이 좋습니다. Propel (symfonys ORM)은 배우기가 다소 힘들었지 만 학습 과정을 끝내면 잘 작동합니다.

그것은 정말 유용한 물건으로 가득 차 있으며 더 많이 사용할수록 좋아집니다.


Gaurav가 언급했듯이, Symphony는 PHP4를 지원하지 않습니다. PHP 프레임 워크를 찾고 있다면 코드 이그니 터 (Code Igniter)를 확인해보십시오.


대안으로 저는 CakePHP를 사용했습니다. 지난 10 개월 동안 내부 용으로 몇 가지 앱 블로그 수준의 복잡성 앱을 만들었습니다. 그것은 환상적이었습니다. 쉽게 들어갈 수 있고, 아주 최근의 PHP가 필요하지 않습니다. 문서는 괜찮습니다. 그리고 거기에 답을 찾기 위해 실패했습니다. 보통 메일 링리스트에서 발견되었습니다.

내가 가진 Cake의 주된 문제점은 ORM에 대한 통제력이별로 없다고 느꼈다는 것이다. 그룹 조항에 대한 지원이 추가되어 최근에 그 영역이 향상되었지만 조인을 명시 적으로 지정할 수는 없다. 따라서 orm은 관련 모델에서 데이터를 가져 오기 위해 많은 쿼리를 수행해야하기 때문에 성능이 저하 될 수 있습니다. 아니면 http://teknoid.wordpress.com/2008/07/17/forcing-an-sql-join-in-cakephp/ 와 같은 해킹을 사용할 수 있지만 다소 엉망입니다. 애플 리케이션이 성장하기 시작하면서 점점 더 많은 모델이 스키마에 추가되면서 점점 더 자주 상황에 부딪히기 시작했다. 그래서 나는 더 많은 기능을 가진 ORM을 지원하는 것으로 전환하기로 결정했다. 꽤 사소한). 그것은 잠시 나를 괴롭 히지 만, 케이크가 훌륭한 도구라는 생각으로 정착했습니다. 저를위한 올바른 도구가 아닙니다.

나는 젠드와 심포니를 주로 보았다. (나는 CodeIgniter 문서를 훑어 보았고 스크린 캐스트를 보았다.) Symfony는 권력과 사용의 용이함의 균형이 잘 맞았 기 때문에 결국 Symfony를 선택했습니다. Doctrine과 Propel, theres는 많은 플러그인과 많은 문서를 사용할 수 있습니다. 나는 내가 편집해야만한다고 생각했던 수백만 yml 파일들을 처리 할 준비가되어 있었지만 놀랍게도 그렇게 많이 구성하지 않아도되었다. Zend는 꽤 강력 해 보이지만 현재 프로젝트에 대해서는 너무 많은 것 같습니다. 내가 읽은 것에서는 symfony 프로젝트 내에서 Zend 라이브러리를 사용할 수 있습니다.

요약하면, 당신이 선택하는 것은 당신의 필요에 달려 있습니다. 복잡한 쿼리를 수행하는 경우 매우 훌륭한 데이터베이스 라이브러리를 제공하는 프레임 워크를 선택하거나 적어도 프레임 워크의 멋을 포기하지 않고 다른 프레임 워크를 쉽게 사용할 수 있도록해야합니다 (예를 들어 CodeIgniter에서 교리를 사용할 수 있음을 이해합니다).


Symfony는 Ruby on Rails를 구성하는 것과 거의 동일한 디자인 패턴을 사용하는 좋은 프레임 워크이지만, 자체 장단점이 있기 때문에 "PHP on Rails"가 아닙니다.

Symfony 1.2에서 Doctrine은 두 번째 ORM이며, 두 번째 ORM과 함께 제공됩니다. 이전 버전에는 플러그인이 있습니다.

전체 YAML 비즈니스 정보 : XML 설정 파일이나 다른 파일 포맷을 선호한다면, 그것을 연결할 수 있습니다. YAML은 기본 설정입니다.

마지막으로, 기본 구조에서 벗어날 수 있습니다 (여전히 구성해야합니다). 문서 (Symfony Book 참조)에는 명시 적으로 언급되어 있습니다.

궁극적으로 맛과 개인 취향의 문제입니다. 나의 충고는 Symfony Book (프로젝트 웹 사이트에서 무료로 얻을 수 있음)을 읽고 예제 프로젝트를 따라 가려고한다. 당신이 그것을 좋아한다면, 그것을 사용하십시오. 그렇지 않다면 다른 것을 시도하십시오.


좋은 문서를 얻으려고하지만 세부 사항에서 그것을 따르려고 할 때, 그것은 악몽입니다.


Symfony 2

Symfony2는 Symfony 1의 많은 문제를 해결했습니다.

  • 프로젝트가 설정되는 방법에 대해 많은 유연성을 제공합니다.

  • 그것은 매우 빠르고 다른 웹 프레임 워크와 비슷합니다.

  • Propel과 Doctrine은 모두 지원되지만 강제는 아닙니다. 제작자는 ORM으로 원하는 것을 사용하도록 선택할 수 있습니다. 아니면 전혀.

  • Symfony2 구성 요소 중 일부는 현재 Drupal 및 PhpBB와 같은 대규모 프로젝트에서 구현되고 있습니다.

심포니 1

Symfony 1은 정말 좋았지 만 몇 가지 한계가있었습니다.

그것은 세련되고 훌륭한 문서를 가지고있었습니다. 특별히 잘못된 것은 없습니다. 모든 것이 더 어려워 야 할 것 같았습니다.

  • 활성 레코드 패턴은 시작하기에 좋았지 만 나중에는 성능 병목 현상이 발생하기 시작했습니다.

  • Propel은 복잡한 SQL 쿼리를 매우 어렵게 만들었습니다. Creole은 OO 방식으로 quesries를 "구성"할 수 있었지만 SQL을 손으로 작성하는 것이 훨씬 쉬웠을 것입니다.

  • 코드를 통한 구성에 대한 선호도가 있습니다 (Symfony는 yaml을 좋아합니다). 즉, 구성 파일과 변경해야 할 옵션을 계속 찾고 있어야합니다. 구성 정의를 잘못된 수준 (예 : 잘못된 부모 노드 아래)에두면 상황이 작동하지 않는 이유를 알 수 없습니다.

  • 설명서는 약간 튜토리얼에 초점을 맞춘 것 같습니다. 종종 나는 단지 견고한 참조를 원했다. 이는 종종 구성 정의를 찾는 것과 관련이 있습니다.

  • 프레임 워크의 구조는 매우 엄격합니다. 설계자가 의도 한대로 정확하게 구현해야합니다.

  • 프레임 워크가 매우 느려지 게되었습니다. 적당한 트래픽 (하루에 50,000 개의 유니크)을 처리하려고했지만 사용했던 서버가 사용할 수 없었습니다.

Symfony 프로젝트가 끝나면 이러한 문제 중 상당수가 사라질 것입니다. 새로운 프레임 워크를 찾는다면 아마도 CodeIgnitor를 살펴볼 것입니다. 이것은 훨씬 단순하고 가벼운 무게를 의미합니다.

Symfony 이후 MVC 패턴을 시행 할 수있는 아주 작은 프레임 워크를 작성했습니다. 내 특정 문제와 일치하도록 프레임 워크 코드를 발전시킬 수 있기 때문에이 기능이 훨씬 마음에 들었습니다. 이것은 실제로 "옳은"일이 아니지만 그것은 나를 위해 일했습니다. 저는 약 6 개의 프로젝트에서이 코드를 사용했으며 가벼운 무게를 유지하기 위해 코드를 추가하고 수정했습니다.


나는 CakePHP, CodeIgniter, ZendFramework 및 Yii를 시도했다. 그들 모두는 찬반 양론이 있지만, Symfony가 매우 융통성이 있기 때문에 Symfony를 가장 좋아한다는 것을 인정해야합니다. 필자가 언급 한 다른 프레임 워크와는 달리 필요한 구성 요소 만 선택할 수 있습니다. 자, 공정하기 위해서, Zend 라이브러리를 사용할 수도 있습니다.

게다가 Symfony는 잘 문서화되어 있으며 위대한 커뮤니티가 있습니다. 그 학습 곡선은 비교적 가파른 학습 곡선이지만, 당신이 일하는 길을 마스터했을 때, 그것이 정말로 유용하다는 것을 알게 될 것입니다.


이 토론을 살펴보면 유용한 정보를 찾을 수있을 것 같아요. http://www.quora.com/Which-framework-is-best-for-beginners-in-PHP-Why 나는 나를, 나는 Symfony의 팬이 아닙니다. 나는 Yii 또는 CodeIgniter를 선호하는데, 그 이유는 단순하고 멋진 확장 (부트 스트랩, 백 벤더, 코코 등) 때문이었습니다.


모든 사람들이 심포니 프레임 워크의 단점에 대해서만 이야기하고 있지만 단점은 무엇인지를 알고 있습니다. 필자의 개인적인 경험으로는 심포니 2의 캐시 시스템이 싫어서 개발 환경에서 두뇌를 먹어 치울 것입니다. 개발 속도가 매우 느리고 물론 짜증납니다.

변경 사항을보기 위해 페이지를 다시로드 할 필요가 없습니다. 파일에 변경 사항을 저장할 때마다 캐시를 ​​지우고 10 초 정도 기다려야합니다. Mac에서 작업하고 다시 기다릴 때 권한 변경 문제가 발생합니다. 몇 초 동안 실제로 변경 사항을 볼 수 있습니다.

말 그대로 똑같은 응용 프로그램을 사용하는 symfon2에서 하나의 응용 프로그램을 개발하는 데 사용할 수있는 zend 프레임 워크를 사용하여 두 개의 응용 프로그램을 동시에 개발할 수 있습니다.

다른 단점도 있지만 심포니 2에서 가장 나쁜 부분이라고 생각합니다. 그것은 개발을 위해 절대로 최적화되지 않습니다. 제대로 개발되지 않으면 생산 최적화 된 프레임 워크로서 어떻게 이해할 수 있습니까?





frameworks