পিএইচপি ওআরএমস: মতবাদ বনাম প্রোপেল


126

আমি একটি নতুন প্রকল্প শুরু করছি Symfony যা নির্দ্ধিধায় সাথে একত্রিত করা হয় মতবাদ এবং চালিত , কিন্তু অবশ্যই প্রয়োজনের আমি একটি পছন্দ করতে .... আউট যদি সাথে যাচ্ছেন সাধারণ অনুকূল এবং / অথবা কনস আছে আরও অভিজ্ঞ মানুষ আমি ভাবছিলাম এই দুজনেরই কোনটি?

অনেক ধন্যবাদ.

সম্পাদনা: সমস্ত প্রতিক্রিয়া, দরকারী স্টাফ জন্য ধন্যবাদ। এই প্রশ্নের সঠিক কোনও সঠিক উত্তর নেই তাই আমি সর্বাধিক জনপ্রিয় আপ-ভোট পেয়েছে এমনটিকে অনুমোদিত হিসাবে চিহ্নিত করব।


5
বলছি, কোনও আপডেট প্রতিক্রিয়া আছে?
পুরানো

উত্তর:


76

আমি মতবাদ নিয়ে যাব। আমার কাছে মনে হয় এটি অনেক বেশি সক্রিয় প্রকল্প এবং সিমফোনির জন্য এটি ডিফল্ট ওআরএম হওয়ায় এটি আরও ভালভাবে সমর্থিত (যদিও সরকারীভাবে ওআরএম সমান বিবেচিত হয়)।

তবুও আপনি ক্যোয়ারির সাথে কাজ করার পদ্ধতি (মানদণ্ডের পরিবর্তে ডিকিউএল) আরও ভাল পছন্দ করি:

<?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();
?>

(মতবাদের বাস্তবায়ন আমার কাছে অনেক বেশি স্বজ্ঞাত)।

এছাড়াও, আপনি মতবাদে সম্পর্ককে যেভাবে পরিচালনা করবেন তা আমি সত্যিই পছন্দ করি।

আমি মনে করি ডক্ট্রিন ডকুমেন্টেশন থেকে এই পৃষ্ঠাটি পড়ার উপযুক্ত: http://www.doctrine-project.org/docamentation/manual/1_2/en/intrration:doctrine-

সংক্ষিপ্তসার হিসাবে: যদি আমি একটি নতুন প্রকল্প শুরু করতাম বা মতবাদ শেখার এবং প্রপেলগুলির মধ্যে চয়ন করতে হত তবে যে কোনও দিন আমি মতবাদের জন্য যাব।


42
প্রোপেল ১.৫-এ, এই ক্যোয়ারিকে উদাহরণ_কোয়ারি :: তৈরি () -> জয়েন ('ফুবা') -> ফিল্টারআইডি (20) -> সন্ধান () (বা ফাইন্ড পি কে (20) হিসাবে যোগ করার পরেও আইডি যদি আপনার প্রাথমিক হয় তবে লেখা যেতে পারে চাবি). আপনি দেখতে পাচ্ছেন, এটি ডক্ট্রাইন থেকে দুর্দান্ত বাক্য গঠন নেয় এবং আরও কিছু যোগ করে। প্রকাশটি কিউ ২০১০ এর শেষের জন্য পরিকল্পনা করা হয়েছে, তবে আপনি এখন এটি আপনার সিমফনি প্রকল্পগুলিতে পরীক্ষা করতে পারেন।
জান ফ্যাব্রি

ভাল ইনপুট, আমি জানতাম না :-)
ফিদাঃ

9
মতবাদ বাস্তবায়ন আমার কাছে অনেক জটিল বলে মনে হচ্ছে।
সত্ত্বা

1
মতবাদ জটিল বিষয়গুলিকে শেষ করে দিয়েছে ... কেবলমাত্র প্রতিক্রিয়ার উপায় হল
জিমোরিলো

40

আমি পক্ষপাতদুষ্ট, যেহেতু আমি প্রপেলের পরবর্তী প্রকাশে কিছুটা সহায়তা করেছি, তবে আপনাকে অবশ্যই বিবেচনা করতে হবে যে প্রপেল সত্যই প্রথম ওআরএম উপলব্ধ ছিল, তখন ডক্ট্রাইন তৈরি হওয়ার পরে কিছুটা পিছিয়ে পড়েছিল, তবে এখন আবার সক্রিয় বিকাশ হয়েছে। সিমফনি 1.3 / 1.4 প্রপেল 1.4 এর সাথে আসে, যেখানে বেশিরভাগ তুলনা প্রপেল 1.3 এ থামে stop এছাড়াও, প্রপেলের পরবর্তী প্রকাশে (1.5.৩) অনেকগুলি উন্নতি হবে, বিশেষত আপনার ক্রাইটেরিয়া তৈরির ফলে (আপনার লেখার জন্য কম কোডের ফলস্বরূপ)।

আমি প্রোপেল পছন্দ করি কারণ এটি ডক্ট্রিনের চেয়ে কম জটিল বলে মনে হচ্ছে: বেশিরভাগ কোড কয়েকটি উত্পাদিত শ্রেণিতে রয়েছে, যেখানে ডক্ট্রাইন প্রচুর ক্লাসে কার্যকারিতা বিভক্ত করেছে। আমি যে লাইব্রেরিগুলি ব্যবহার করছি (সেগুলি খুব বেশি "ম্যাজিক" নয়) সম্পর্কে ভাল ধারণা পেতে আমি পছন্দ করি তবে অবশ্যই প্রোপেলের সাথে আমার আরও অভিজ্ঞতা আছে, তাই ডক্ট্রিন পর্দার আড়ালে এত জটিল নয়। কেউ কেউ বলে যে প্রপেল দ্রুততর, তবে আপনার নিজের এটি পরীক্ষা করা উচিত এবং এটি বিবেচনা করুন যে এটি অন্যান্য পার্থক্যের চেয়েও বেশি।

হয়ত আপনার বিভিন্ন ফ্রেমওয়ার্কের জন্য সিমফনি প্লাগইনগুলির উপলব্ধতাও বিবেচনা করা উচিত। আমি বিশ্বাস করি প্রোপেলের এখানে একটি সুবিধা রয়েছে তবে আমি জানি না যে তালিকাবদ্ধ প্লাগইনগুলির মধ্যে এখনও সিমফোনির সর্বশেষ সংস্করণটি আপ টু ডেট রয়েছে।


4
প্রোপেল 1.5 তে নতুন ক্যোয়ারের উন্নতিগুলি সত্যিই দুর্দান্ত।
টম

23

এটি ব্যক্তিগত পছন্দ নেমে আসে। আমি প্রোপেল ব্যবহার করি কারণ (অন্যান্য জিনিসের মধ্যে) আমি এও পছন্দ করি যে সমস্ত কিছুর নিজস্ব কংক্রিট গেটর এবং সেটার পদ্ধতি রয়েছে। মতবাদে, এটি ক্ষেত্রে নয়।

চালিত:

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

মতবাদ:

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

আমি গেটার্স এবং সেটটারগুলি পছন্দ করার কারণটি হ'ল যদি আমার প্রয়োজন হয় তবে আমি তাদের মধ্যে সমস্ত ধরণের যুক্তি যুক্ত করতে পারি। তবে এটি কেবল আমার ব্যক্তিগত পছন্দ।

আমার আরও যোগ করা উচিত যে যদিও প্রোপেল অতীতে ধীর-গতিশীল ছিল, এটি এখন আবার সক্রিয় বিকাশের অধীনে। এটি গত কয়েক মাসে বেশ কয়েকটি নতুন সংস্করণ প্রকাশ করেছে। প্রোপেলের সবচেয়ে সাম্প্রতিক সংস্করণটিতে ডক্ট্রিনের অনুরূপ একটি "সাবলীল ক্যোয়ারী ইন্টারফেস" অন্তর্ভুক্ত রয়েছে , তাই আপনি যদি না চান তবে আপনাকে আর মানদণ্ড ব্যবহার করতে হবে না।


7
শিক্ষায় আপনি প্রতিটি সম্পত্তি জন্য setters এবং getters ওভাররাইড করতে পারেন এবং কাস্টম যুক্তি আছে (দেখুন doctrine-project.org/documentation/manual/1_2/en/... - ATTR_AUTO_ACCESSOR_OVERRIDE জন্য অনুসন্ধান প্রাসঙ্গিক অধ্যায় পেতে)
Marek Karbarz

এটি দেখতে ঠিক আছে, তবে আপনি এখনও কল করে সম্পত্তি সেট করেছেন: $ x-> প্রোপনাম = 'এবিসি'; এটি সমস্যাযুক্ত কারণ এটি একাধিক পরামিতিগুলি পাস করার পক্ষে সমর্থন করে না।
lo_fye

20

এটা লক্ষনীয় মতবাদ 2 হয় উন্নয়নে বর্তমানে মুক্তি [ইডি] এবং ফাংশন প্রায় পুরোপুরি মতবাদ 1. এটি সক্রিয় রেকর্ড পরিবর্তে ডেটা ম্যাপার প্যাটার্ন উপর নির্ভর বর্তমান স্থিতিশীল সংস্করণ থেকে ভিন্ন, এবং হাতল অধ্যবসায় একটি 'সত্তা ম্যানেজার' ব্যবহার যুক্তি। প্রকাশিত হওয়ার সাথে সাথে এটি জাভার হাইবারনেট (ডক্ট্রাইন 1 এর চেয়ে বেশি কার্যকরভাবে রেলস অ্যাক্টিভেকর্ডের মতো) এর সাথে সাদৃশ্য বোধ করবে।

আমি ডক্ট্রিন 2 এর আলফা প্রকাশের সাথে বিকাশ করছি এবং অবশ্যই এটি অবশ্যই ডক্ট্রিন 1 এর উপরে মাথা এবং কাঁধে রয়েছে (কেবল আমার মতে, এবং আমি কখনও প্রপেল ব্যবহার করি নি)। সম্ভাবনাগুলি ভাল যে মতবাদ সম্প্রদায়টি প্রকাশিত হলে এটির দিকে অগ্রসর হবে।

আমি আপনাকে মতবাদ পরীক্ষা করে দেখার জন্য উত্সাহিত করব, তবে আপনি যদি প্রোপেল এবং মতবাদ এখন সক্রিয় রেকর্ড শৈলীটি ব্যবহার করেন তবে আপনি কেবল প্রপেলের সাথে লেগে থাকতে চাইবেন।


4
ডক্ট্রাইন 2 এর একটি স্থিতিশীল সংস্করণ সম্প্রতি প্রকাশিত হয়েছিল। doctrine-project.org/blog/doctrine2-
রিলেজড

5

দুটি রেফারেন্স কিছুটা পুরানো হয়ে গেছে তবুও আপনি কিছু সাধারণত্ব coverেকে রাখেন, মূলত আপনাকে যেমন আপনার কাঠামোর সাথে নিজের অভিজ্ঞতার মূল্যায়ন করতে হবে, মতবাদের একটি বড় অসুবিধা হল একটি আইডিই না পাওয়ার অক্ষমতা যা আপনাকে সেই প্রোপেলে অটো-কোড দেয় একটি বিজয়ী, শেখার কার্ভগুলি চালিত করা এবং তত্ত্বটি খুব আলাদা, আপনার প্রজেক্টের যদি জটিল ডেটা মডেলটি মতবাদ ব্যবহার করে তা পরিচালনা করা দরকার, যদি আপনি কোনও ওআরএম দিয়ে দ্রুত কাজ করতে চান যা সেরা ডকুমেন্টেড এবং প্রোপেলে আরও সমর্থন খুঁজে পেতে পারে ইন্টারনেট ব্যবহার করে, অনেক বেশি পরিপক্ক এবং আমি বিশ্বাস করি যে সর্বাধিক ব্যবহৃত।

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


সিম্ফনি বিশ্বে এটি মনে হয় যে মতবাদ অবশ্যই সর্বাধিক ব্যবহৃত হয় - বিশেষত নতুন প্রকল্পগুলির জন্য। অবশ্যই অনেকগুলি এসএফ 1.0 প্রকল্প রয়েছে যা এখনও প্রপেল ব্যবহার করে কারণ ডক্ট্রাইন সিমফোনির জন্য 1.1 পর্যন্ত উপলব্ধ ছিল না।
ফিদাঃ

5

আমি প্রোপেল ১.6 ব্যবহার করার পরামর্শ দেব যা আইডিইর স্বতঃপূরণ ফাংশনের জন্য ভাল।


26
-1 কোনও আইডিইর স্বতঃপূরণ প্রযুক্তিগত পছন্দ হওয়ার কারণ হওয়া উচিত নয়
ক্লিমেন্ট হেরেম্যান

14
@ClementHerreman আমি সম্মত এটা করা উচিত হবে না মানদণ্ড, কিন্তু আমি মনে করি কিভাবে উত্পাদনশীল এক একটি নির্দিষ্ট প্রযুক্তির সঙ্গে হতে পারে অবশ্যই হওয়া উচিত একটি এটা চয়নের জন্য কারণ। এবং সর্বসম্মত শ্রদ্ধার সাথে আমি তাই আপনার ডাউনভোটের সাথে একমত নই ... আপনি যদি উত্তরটির সাথে একমত হন তা নির্বিশেষে এটি "ভুল" নয় (বা এটি?), এবং এটি কিছুটা কাজে লাগবে (যদি না ভুল হয়, তবে ক্ষেত্রে) , আপনার এটি বলা উচিত)।
Sepster

2
আইএমও যদি আপনার উত্পাদনশীলতাটি সফ্টওয়্যার গুণমান, স্বাতন্ত্র্য এবং ধারাবাহিকতার পরিবর্তে স্বতঃপূরণ দ্বারা আরও উন্নত হয় তবে অদ্ভুত কিছু ঘটছে is কোডিংহরর . com/blog/2009/01/ … দেখুন । তবে আপনি ঠিক বলেছেন, এক পর্যায়ে এই উত্তরটি ভুল নয় , কেবল যথেষ্ট ভাল নয়, এমনকি ভালও নয়।
ক্লিমেন্ট হেরেম্যান

1
@ClementHerreman, যদি নয় সহায়ক আর এটি ব্যবহার করবেন না;) +1
AMD

এটির কি কোনও আপ টু ডেট প্রতিক্রিয়া রয়েছে? এটা পুরানো উপায়।
কিনিসো

2

আমি পিএইচপি 5 নন-ফ্রেমওয়ার্ক ওআরএম এর ব্যবহারকারী নই, তবে এখানে কয়েকটি ভাল তুলনার পোস্ট রয়েছে (যদি আপনি এখনও সেগুলি না দেখে থাকেন):

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

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

উভয় উপসংহার সিম্ফনির জন্য ওআরএমের একটি নতুন প্রজন্ম হিসাবে ডক্ট্রাইনের প্রতি প্রিয়।


1
রেকর্ডের জন্য, এই তুলনাটি সম্পূর্ণ পুরানো - প্রপেলের বর্তমান সংস্করণ পিডিও ব্যবহার করে, বহু থেকে বহু সম্পর্ককে সমর্থন করে এবং দুর্দান্ত ডকুমেন্টেশন রয়েছে। বিবেচনা করার মতো বিষয়: আমাদের মধ্যে কেউ কেউ DQL এর মতো মালিকানাধীন কোয়েরি ভাষার চেয়ে ভার্জোজ মানদণ্ড-নির্মাতা ক্যোয়ারী-স্টাইল পছন্দ করে - এটির IDE সমর্থন রয়েছে এবং এটি একটি শ্রেণি, তাই আপনি এটি প্রসারিত করতে পারেন can আমি এখনও বেছে নেওয়ার চেষ্টা করছি, তবে প্রপেল ওভার ডক্ট্রিনের জন্য আমি প্রচুর প্লাস'স দেখতে পাচ্ছি, যদি আপনি স্থির কোড-প্রজন্মকে আপত্তি না করেন এবং মালিকানাধীন কোয়েরি-ভাষার বিপরীতে "রিয়েল" পিএইচপি কোডের সুবিধাগুলি দেখতে পান যা কোনও আইডিই-তে কেবল স্ট্রিং।
mindplay.dk

2

উভয় বছর ধরে বেশ কয়েকটি বছর ব্যবহার করার পরে আমি কীভাবে আপনার ক্যোয়ারী যুক্তি বানাবেন তার ভিত্তিতে আমি প্রোপল 2 ডক্ট্রিনের কাছে পছন্দ করি। মতবাদ যতটা গভীরতা অর্জন করে এবং এর অনেকগুলি দিক পরিচালনা করতে পারে তার গভীরতা সেই স্তরের সাথে মেলে। প্রোপেল আমার কাছে মনে হয় ক্যোয়ারি ইন্টারঅ্যাকশনগুলি তৈরি এবং পরিচালনা করার আরও তরল এবং অবজেক্ট চালিত উপায় রয়েছে।

আমার জন্য এটি মডেলটিতে কম কোড এবং আরও কাঠামোগত কীভাবে যুক্তি প্রক্রিয়াজাত করা যায় / করা হবে তার আশেপাশে আরও কাঠামো তৈরি করেছিল। এর ফলে সাধারণ কার্যকারিতা হিসাবে কেবলমাত্র অনেকগুলি ইন্টারঅ্যাকশন তৈরি হয়েছিল। (আপনি একটি ডাটাবেস দিয়ে যা করবেন তার 90% এর পরেও কিছুটা ক্রুড অপারেশন হতে চলেছে))

শেষ পর্যন্ত, উভয়ই শক্তিশালী, পরিচালনাযোগ্য এবং কাজটি সম্পন্ন করবে। আমার ব্যক্তিগত প্রকল্প এবং আগ্রহের প্রপেল ওআরএম 2 এবং ভবিষ্যতের প্রকল্পগুলি, এখনও পিএইচপিতে লিখিত থাকলে সেই পথে চলে যাবে।

আমি গত 3-4 বছর ধরে প্রতিদিনের ভিত্তিতে উভয়ই ব্যবহার করছি।


1

আমি ডিবিফিন্ডার প্লাগইন ব্যবহার করার পরামর্শ দেব । এটি আসলে একটি খুব শক্তিশালী প্লাগইন যা উভয়কেই সমর্থন করে এবং এটি বেশ দুর্দান্ত একটি শক্তিশালী। আমি আসলে এটি যে কোনওর চেয়ে ভাল ব্যবহার করতে পছন্দ করি।


@ মাইক: ধন্যবাদ, প্লাগইন সম্পর্কে জানতেন না তবে মনে হয় এটি কেবল এসএফ 1.2 পর্যন্ত সমর্থন করে। আমি শেষ পর্যন্ত মতবাদের সাথে গিয়ে শেষ করেছি, মনে হচ্ছে এটি সঠিক পছন্দ ছিল, যদিও আরও জটিল স্টাফের জন্য সরাসরি এসকিউএল লেখার প্রয়োজন হয়।
টম

-2

আমি যদি ভুল না করি তবে উভয়ই ওআরএম এক্সএমএল-ভিত্তিক স্কিমা ব্যবহার করে এবং এই স্কিমা সংজ্ঞাটি তৈরি করা বেশ জটিল। আপনার যদি প্রয়োজন হয় সাবলীল শৈলীর সাথে পিএইচপি-ভিত্তিক সাধারণ স্কিমা। আপনি LazyRecord https://github.com/c9s/LazyRecord চেষ্টা করতে পারেন এটি স্বয়ংক্রিয়ভাবে মাইগ্রেশন এবং আপগ্রেড / ডাউনগ্রেড স্ক্রিপ্ট জেনারেটরকে সমর্থন করে। এবং রান্টটাইম ব্যয় ছাড়াই সমস্ত শ্রেণীর ফাইল স্থিতিশীলভাবে তৈরি করা হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.