CakePhp و Yii: أوجه التشابه/الاختلافات/السرعة؟

StackOverflow https://stackoverflow.com/questions/4302405

  •  29-09-2019
  •  | 
  •  

سؤال

أنا مبرمج CakePhP. لقد قررت تجربة إطار YII. أود أن أعرف ما هي الطرق التي تشبه CakePhP وتختلف عن YII. أيضا ، هل YII أسرع بشكل ملموس من CakePhP كما يدعون؟

هل كانت مفيدة؟

المحلول 4

الاختلاف بين الكعكة و yii

  1. تحتوي الكعكة على نموذج لكل وحدة تحكم حيث يكون لدى Yii 1 لكل إجراء ، أي وحدة تحكم مستقلة عن نموذج معين في Yii
  2. في YII ، عليك تحديد عرضك ونماذجك يدويًا في كل إجراء
  3. في السجلات المتعلقة بـ YII ومرتبطة لا يتم جلبها ما لم يتم تحديدها يدويًا
  4. في yii ، يمكن أن يكون النموذج من نوعين (أي يمتد من) نموذج السجل النشط أو نموذج النموذج بناءً على ما إذا كنت تريد حفظ البيانات أم لا على التوالي
  5. يفرض CakePhP الاتفاقية ، في حين أن YII هو المرونة.

نصائح أخرى

من التجربة الشخصية ، هناك العديد من الاختلاف في كلا الأطر ، لا سيما الطريقة التي يتم بها التعامل مع النماذج في Cake vs Yii.

  • في CakePhP ، لا يمكنك استخدام المفتاح الأساسي المركب ، وهذا هو كسر الصفقة الرئيسي بالنسبة لي. يتم دعم المفتاح الأساسي المركب في YII.
  • Cakephp يفرض الاتفاقية ، بينما yii حسنات الاتفاقية ، أنت لست مجبرًا على اتباع معيار معين. على الرغم من أن الاتفاقية المفيدة هي وسيلة جيدة لبناء ممارسة جيدة للبرمجة ، إلا أن المرونة التي عرضت عليها YII تفوز في هذه الجولة بالنسبة لي.
  • خارج أداء الصندوق ، أعتقد أن YII لديه ميزة ، ولكن كما هو الحال مع ضبط الأداء ، مع تكوين ذاكرة التخزين المؤقت المناسبة ، وطالما كنت حريصًا على استخدام أنماط ActivereCord ، فهي ليست منفصلة كثيرًا

كملاحظة جانبية ، لديّ تطبيق تطبيق ويب مع كل من CakePhp و Yii ، كانت التعليقات التي حصلت عليها من الفريق هي أن الفريق الأقل خبرة يفضل CakePhP ، بينما يفضل فريق Yii من قبل الفريق الأكثر خبرة. جعل هذا ما تريد.

منشور قديم ولكن مجرد إضافة بعض الخبرة لذلك.

لقد كنت أستخدم الكعكة لفترة من الوقت الآن. 3 سنوات لتكون دقيقة.

في الوقت الحاضر YII هو بالتأكيد الذي يقود تقنية MVC في PHP. إنه إطار قد لا يمكن أن يقارن به إطار عمل PHP آخر. أنا شخصياً كنت معجبًا حقًا بـ "الشبكة" ... اعتقدت أن جانب PHP كان يفتقر دائمًا إلى هذا بطريقة ما :) إنه سريع المدهش ويستناسب مجموعة واسعة من المطورين.

بالنسبة لـ CakePhP: لقد قرأت عدد المدونات التي يطالب بها الناس وربما يتشبثون بها "الاتفاقيات" و "صرامة" من الإطار.

ومع ذلك ، فإنني أوافق وأختلف. الادعاءات التي عادة ما تكون نوعًا ما تبدو واضحة بمجرد أن تتعطل منه. كل قاعدة تلك الكعكة يقتبس القوات يقتبس يمكن تجاوزها بسهولة. الأهم من ذلك ما يفشل الناس في ملاحظته لماذا يتم إجبار الاتفاقيات؟

إذا كنت مطورًا لديه الكثير من ضغط الإنتاج ، أود أن أقول سحراء تلقائي من الكعكة التي تعمل خلف المشهد ، مثل الحصول على بيانات النماذج ذات الصلة ، وحفظ بيانات النماذج ذات الصلة ، وتحديد العلاقات بناءً على الاتفاقيات إنه لأمر مدهش للغاية.

لا يمكن شرح الدقة التي تأتي من اتباع تلك الاتفاقيات هنا ولكن من ذوي الخبرة فقط.

لقد قرأت أيضًا الكثير من المدونات حيث رأيت شكاوى حول سرعة الإطار. في تجربتي أود أن أقول ، يجب عليك اقرأ الكتاب. يحدد الأشخاص عدد العلاقات ، والكعك بشكل افتراضي يجلب جميع بيانات النماذج ذات الصلة. يمكنك تجاوز هذا السلوك وجلب البيانات التي تحتاجها فقط. في الواقع الربط الخاص بك ، فك روعة النماذج الخاصة بك على الطيران. الكعكة أيضا سلوك يسمى "يمكن احتواء" للغرض بالذات.

بمجرد أن تضع يديك على الكعكة ، فإن الإنتاج والتطورات "سريعة" حقًا.

أيضًا ، تغيرت LOT منذ CAKPHP 2 ، إنها سريعة جدًا وأكثر قابلية للتطوير.

قال كل شيء ، أعتقد حقًا أن Cake لها وثائق سيئة للغاية ؛ ومع توثيق أفضل ، والمزيد من الأمثلة على العالم الواقعية والمستودعات ، سيكون منافسًا أقوى.

كلا الإطارين متشابهان للغاية ، لكني أحب yii لأنه سريع ، يستخدم التحميل كسول على النماذج ، ومئات من المساعدين (واجهة المستخدم jQuery) ، لا حاجة إلى xml/yaml ، والكثير من الامتداد ( +تخصيص ، +التحكم) ، المنتدى النشط ، تصميم OOP بشكل كامل وفارح ، حتى النظام ... إلخ.

يعد CakePhp إطارًا جيدًا جدًا أيضًا ، أحب أن يخططوا للدورات التدريبية.

أتوسل إلى الاختلاف مع كل هؤلاء العجاب. كونه مستخدمًا لكلا الإطارين ، إذا كنت تعرف ما تفعله ، فإن CakePhP مرن للغاية ، مما يعني أنهم يطلبون من الأشخاص استخدام الاتفاقيات ، لكن نفس الوثائق تخبرك بكيفية الالتفاف على هذا. وحتى الآن ، لم يتم تقديم معايير حقيقية ، لذا عار عليكم جميعًا ...

في تجربتي ، اضطررت إلى القيام بضبط الأداء للكيك ، وليس YII ، لذلك أعتقد أنني لا أستطيع تقديم المقارنة حتى الآن حول كيفية عمل الأشياء أو كيف أتوقع أن تعمل الأشياء. بالإضافة إلى أن معظم المعايير الموجودة هناك تستخدم CakePhP والأطر الأخرى خارج الصندوق ، لذلك أتوقع أن يؤدي CakePhP أداءً سيئًا.

لقد عملت مع CakePhP لمدة عامين تقريبًا واستكملت تقريبًا الأول في YII. (لقد فعلت أيضًا عامًا في Zendf وكرهته) كان CakePhp جيدًا لنظامه الصارم ولكن كان لديه الكثير من القيود على مرونته. yii في الواقع مصنوعة تماما بطريقة أسميها "اختراق لي". أفضل ميزة هي أنها تبدأ يومك بفئة تحكم فارغة تستخدم لترث جميع وحدات التحكم الخاصة بك. ولكن سرعان ما اكتشفت أنه يمكنني القفز وتجاوز وظائف YII القياسية مع نطاق تطبيق خاص ، مثل العرض. في الكعكة ، لا يمكنك القيام بالكثير من الاختراق في رمز التطبيق الخاص بك. ستذهب في النهاية إلى دليل Core للحصول على بعض الحالات الخاصة جدًا (فكرة سيئة للغاية عندما تقوم بتحديث أساسي).

من السهل جدًا إنشاء المكونات الإضافية/الإضافات في YII مقارنةً بـ CakePhP.

Cakephp حتى أعرف ، لم يدعم الوحدات النمطية. أنا لست من محبي الوحدة النمطية بنفسي ، ولكن في النهاية عندما ينمو رمز التطبيق الخاص بك ، فإنك ترغب في تقسيمها إلى مجموعة منفصلة ، على سبيل المثال ، يمكنك الاستعانة بمصادر خارجية للوحدة إلى شخص آخر.

أعتقد أن Cakephp Core ثقيل بما يكفي للتباطؤ على مواقع المرور العالية. Zendf أسوأ بكثير. Yii لديه مكدس مكالمات أصغر بحلول الوقت الذي تسمى فيه الإجراء.

لا يوجد cakephpt.php ولكن هناك yiit.php (إطار كامل في ملف واحد ، والاستخدام الإنتاج فقط) لمجموعة كل شيء في YII باستخدام APC/etc وحفظ قليلة ملليسيك في ملفات النظام المفتوحة.

لا تقل المنافسة لجهاز URL الخاص بـ YII و ALGO العكسي لجميع الأطر الأخرى في PHP. تكوين url url imo yii سهل جدًا مقارنة بـ cakephp. وبعد ذلك ، يبدأ في جعل عنوان URL للمتصفح الدقيق أيضًا من نفس التكوين عند الاتصال Createurl ، مما يجعل عناوين URL في تطبيقك يتغير فقط مع ملف التكوين. إذا اخترت نقل وحدة تحكم/وحدة إلى مجال منفصل (فرعي) ، فحية حاجة إلى تغييرات التكوين ، يمكن أن يظل رمز التطبيق الخاص بك مهملًا.

الطريقة التي تحتوي بها النماذج على ملصقات السمات ، والقواعد ، يمكن أيضًا تغيير تلك. جميع أساليب النموذج دعم الحصول على/نشر خصائص - LifeSaver. ثم قواعد العلاقة هي أيضًا أفضل بكثير مما هو قادر في CakePhP. عمليات التحقق من صحة وحتى رمز PHP الخام في بعض القواعد هي الكثير من المرونة.

اتفاقية مسار الملف المرنة للغاية هي أيضًا فريدة من نوعها لـ YII. ثم تخطيطات فرعية تجعلها بسهولة شديدة لإنشاء قابلية إعادة الاستخدام لآرائك.

لقد حاولت تعلم CakePhP ولكن الوثائق على الرغم من أنها واسعة النطاق فقيرة في هيكلها. على سبيل المثال في قسم Formhelper في الدليل ، يتحدث عن خيارات النموذج دون شرح كيفية عمله ، فقط بناء الجملة ثم يعرض إخراج HTML. بالنسبة للمبتدئين مثلي ، أريد أن أعرف بناء الجملة موافق ، ولكن أيضًا ، أين تذهب بيانات النماذج التي تم جمعها ، كيف يمكنني التقاط حقول الإدخال ، وكيف يمكنني توجيه إدخال النموذج إلى أين تذهب ، وماذا يعني ذلك أنت "إنشاء سياق النموذج" ، ما هو هذا السياق وكيف يتم استخدام هذا وما إلى ذلك.

ماذا يعني هذا,

"على افتراض أن مجموعة المستخدمين hasandbelongstomany. في وحدة التحكم الخاصة بك ، قم بتعيين متغير صيادي الجمع (المجموعة -> المجموعات في هذه الحالة ، أو خارج النمو -> extrafunkymodels) مع خيارات التحديد. في إجراء وحدة التحكم ، يمكنك وضع ما يلي:".

لقد قمت بدراسة Codeigniter وكان ذلك بديهيًا للغاية في تفسيراته ، لكن وثائق CakePhP ، في حين أنه يتم تقديمها بشكل جيد للغاية ، لا تفسر الأشياء ولكنها تقرأ أكثر كدليل مرجعي. أنا أبحث حاليًا في YII ، وعلى الرغم من أن الأمر أكثر تعقيدًا من Codeigniter ، فإن الوثائق أكثر إفادة بكثير وبالتالي فهي من CakePhp.

Yii أفضل للمبتدئين إلى MVC ، ولكن CakePhP صعب بعض الشيء بالنسبة للمبتدئين. كلاهما أطر عمل لطيفة ، لكن YII لديها المزيد من البرامج التعليمية أو الوثائق المتاحة في الشبكة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top