Programming

PHP ORM : 교리와 프로 펠

procodes 2020. 7. 6. 21:16
반응형

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을 사용합니다. 왜냐하면 모든 것이 고유 한 getter & setter 메소드를 가지고 있다는 사실을 좋아하기 때문입니다. 교리에서는 그렇지 않습니다.

추진 :

$person->setName('Derek');
echo $person->getName();

교의:

$person->name = 'Derek';
echo $person->name;

게터와 세터를 좋아하는 이유는 필요한 경우 모든 종류의 논리를 넣을 수 있기 때문입니다. 그러나 그것은 나의 개인적인 취향 일뿐입니다.

또한 Propel은 과거에는 느리게 움직 였지만 이제는 다시 활발하게 개발되고 있습니다. 지난 몇 달 동안 몇 가지 새로운 버전이 출시되었습니다. 가장 최신 버전의 Propel에는 Doctrine과 유사한 "유창한 쿼리 인터페이스"가 포함되어 있으므로 원하지 않는 경우 더 이상 기준을 사용할 필요가 없습니다.


또한 주목해야 교리 2 현재 개발 출시 [ED] 교리 대신 액티브 레코드의 데이터 매퍼 패턴에 의존 1. 현재 안정 버전의 기능을 거의 완전히 상이하고, 핸들 지속성에 '엔티티 관리자'를 사용 논리. 출시되면 Java의 최대 절전 모드와 비슷합니다 (교리 1은 Rails의 ActiveRecord와 유사합니다).

나는 Doctrine 2의 알파 릴리스로 개발해 왔으며 그것이 Doctrine 1의 머리와 어깨라고 말해야한다 (단지 나의 의견이며, 나는 결코 Propel을 사용한 적이 없다). 교리 공동체가 공개 될 때 교리 공동체가 그것을 향해 나아갈 가능성이 높습니다.

교리를 확인하도록 권장하지만 Propel과 Doctrine이 현재 사용하는 Active Record 스타일을 선호한다면 Propel을 고수하고 싶을 것입니다.


두 참조는 다소 구식이기 때문에 일부 일반 사항을 다루지 만 기본적으로 프레임 워크에 대한 경험을 평가해야합니다. 교리의 주요 단점은 해당 추진에 자동 코딩 할 수있는 IDE를 사용할 수 없다는 것입니다. 승자, 학습 곡선 추진 및 교리가 매우 다르므로 프로젝트가 복잡한 데이터 모델을 관리하여 교리를 사용하여 복잡한 문서를 관리해야하는 경우 가장 잘 문서화 된 ORM으로 빠르게 작업하고 Propel에서 더 많은 지원을 받으려면 추진하기가 더 쉽습니다. 인터넷 사용은 훨씬 성숙하고 가장 많이 사용한다고 생각합니다.

http://propel.posterous.com/propel-141-is-out


I'd suggest to use propel 1.6 which is better for IDE's autocomplete function.


I'm not a user of PHP 5 non-framework ORM, but here's some good comparison posts (in case you haven't seen them yet):

http://codeutopia.net/blog/2009/05/16/doctrine-vs-propel-2009-update/

http://trac.symfony-project.org/wiki/ComparingPropelAndDoctrine

Both conlusion favorite towards Doctrine as a newer generation of ORM for Symfony.


After using both of them for a number of years I prefer Propel 2 to Doctrine simply based on how you construct your query logic. Doctrine is as in depth as it can get and managing many aspects of it match that level of depth. Propel I feel has a more fluid and object driven way of building and managing the query interactions.

For me this led to less code in the model and more structures around how logic can/will be processed. This resulted in just building out many interactions as common functionality. (After all 90% of what you will do with a database is just going to be some degree of crud operation.)

In the end, both are powerful, manageable and will get the job done. My personal projects and interest use Propel ORM 2 and future projects, if still written in PHP will go that route.

I've been using both on a daily basis for the past 3-4 years.


I'd suggest using DbFinder Plugin. This is actually a very powerful plugin that supports both, and is quite a nice powerful. I actually like using it better than either.


If I'm not wrong, both ORMs use XML-based schema, and creating these schema definition is pretty cumbersome. If you need a PHP-based simple schema with fluent style. You may try LazyRecord https://github.com/c9s/LazyRecord it supports automatic migration and upgrade/downgrade script generators. And all the class files are generated statically without runtime cost.

참고URL : https://stackoverflow.com/questions/2062473/php-orms-doctrine-vs-propel

반응형