[php] PHP ORM : 교리와 프로 펠
교리 및 프로 펠 과 쉽게 통합되는 심포니 로 새로운 프로젝트를 시작하고 있지만 물론 선택해야합니다 .. 이 둘 중 하나?
고마워
편집 :
모든 응답, 유용한 것들에 감사드립니다. 이 질문에 대한 정답은 없기 때문에 가장 인기있는 투표권을 얻은 사람을 승인 된 것으로 표시하겠습니다.
답변
나는 교리와 함께 갈 것이다. 그것은 훨씬 더 활발한 프로젝트이며 심포니의 기본 ORM 인 것이 더 잘 지원됩니다 (공식적으로 ORM이 동일하다고 간주되지만).
또한 쿼리 작업 방식 (기준 대신 DQL)이 더 좋습니다.
<?php
// Propel
$c = new Criteria();
$c->add(ExamplePeer::ID, 20);
$items = ExamplePeer::doSelectJoinFoobar($c);
// Doctrine
$items = Doctrine_Query::create()
->from('Example e')
->leftJoin('e.Foobar')
->where('e.id = ?', 20)
->execute();
?>
(교리의 구현은 나에게 훨씬 직관적입니다).
또한 저는 교리에서 관계를 관리하는 방식을 선호합니다.
나는 Doctrine 문서 에서이 페이지를 읽을 가치가 있다고 생각합니다 : http://www.doctrine-project.org/documentation/manual/1_2/en/introduction:doctrine-explained
요약하자면 : 새로운 프로젝트를 시작하거나 교리 학습과 프로 펠 학습 중 하나를 선택해야한다면 언젠가는 교리에 갈 것입니다.
답변
Propel의 다음 릴리스에서 약간의 도움을 주었으므로 편견이 있지만 Propel이 실제로 사용할 수있는 첫 번째 ORM임을 고려한 다음 Doctrine을 만들었을 때 약간의 지연이 있었지만 다시 개발이 활발해졌습니다. Symfony 1.3 / 1.4는 대부분의 비교가 Propel 1.3에서 끝나는 Propel 1.4와 함께 제공됩니다. 또한 Propel (1.5)의 다음 릴리스에는 특히 사용자 기준 작성 (작성할 코드가 적음)이 많이 향상되었습니다.
나는 Doctrine보다 덜 복잡해 보이기 때문에 Propel을 좋아합니다. 대부분의 코드는 생성 된 소수의 클래스에 있지만 Doctrine은 많은 클래스에서 기능을 분할했습니다. 나는 사용하고있는 라이브러리 (너무 “매직”은 아님)를 잘 이해하고 싶지만, 물론 Propel에 대한 경험이 더 많기 때문에 Doctrine은 배후에서 그렇게 복잡하지 않을 수 있습니다. 어떤 사람들은 프로 펠이 더 빠르다고 말하지만 직접 확인해야하며 이것이 다른 차이점보다 큰지 고려해야합니다.
다른 프레임 워크에 Symfony 플러그인의 사용 가능성도 고려해야합니다. Propel이 여기에 이점이 있다고 생각하지만 최신 버전의 Symfony를 사용하여 나열된 플러그인 중 몇 개가 여전히 최신인지 알 수 없습니다.
답변
그것은 개인 취향에 달려 있습니다. 나는 무엇보다도 Propel을 사용합니다. 교리에서는 그렇지 않습니다.
추진 :
$person->setName('Derek');
echo $person->getName();
교의:
$person->name = 'Derek';
echo $person->name;
내가 게터와 세터를 좋아하는 이유는 필요한 경우 모든 종류의 논리를 넣을 수 있기 때문입니다. 그러나 그것은 나의 개인적인 취향 일뿐입니다.
또한 Propel은 과거에는 느리게 움직 였지만 이제는 다시 활발하게 개발되고 있습니다. 지난 몇 달 동안 몇 가지 새로운 버전이 출시되었습니다. 가장 최신 버전의 Propel에는 Doctrine ‘s와 유사한 “유창한 쿼리 인터페이스”가 포함되어 있으므로 원하지 않는 경우 더 이상 기준을 사용할 필요가 없습니다.
답변
또한 주목해야 교리 2 인 현재 개발 출시 [ED] 교리 대신 액티브 레코드의 데이터 매퍼 패턴에 의존 1. 현재 안정 버전의 기능을 거의 완전히 상이하고, 핸들 지속성에 ‘엔티티 관리자’를 사용 논리. 출시되면 Java의 최대 절전 모드와 유사합니다 (교리 1은 Rails의 ActiveRecord와 유사합니다).
나는 Doctrine 2의 알파 릴리스로 개발 해 왔으며 그것이 Doctrine 1보다 머리와 어깨라고 말해야합니다 (제 의견으로는 Propel을 사용한 적이 없습니다). 교리 공동체가 공개 될 때 교리 공동체가 그것을 향해 나아갈 가능성이 높습니다.
교리를 확인하도록 권장하지만, Propel과 Doctrine이 현재 사용하는 Active Record 스타일을 선호한다면 Propel을 고수하고 싶을 것입니다.
답변
두 참조는 다소 구식이기 때문에 일부 일반 사항을 다루지 만 기본적으로 프레임 워크에 대한 경험을 평가해야합니다. 교리의 주요 단점은 해당 추진에 자동 코딩 할 수있는 IDE를 사용할 수 없다는 것입니다. 승자, 학습 곡선 추진 및 교리가 매우 다르므로 프로젝트가 복잡한 데이터 모델을 관리하여 교리를 사용하여 복잡한 문서를 관리해야하는 경우 가장 잘 문서화 된 ORM으로 빠르게 작업하고 Propel에서 더 많은 지원을 받으려면 추진하기가 더 쉽습니다. 인터넷 사용은 훨씬 성숙하고 가장 많이 사용한다고 생각합니다.
답변
IDE의 자동 완성 기능에 더 나은 propel 1.6을 사용하는 것이 좋습니다.
답변
나는 PHP 5 비 프레임 워크 ORM 사용자가 아니지만 다음은 좋은 비교 게시물입니다 (아직 보지 못한 경우).
http://codeutopia.net/blog/2009/05/16/doctrine-vs-propel-2009-update/
http://trac.symfony-project.org/wiki/ComparingPropelAndDoctrine
이 두 가지 결론은 교리에 대해 Symfony의 새로운 ORM 세대로 선호됩니다.