هل يمكنك الوصول إلى نموذج من داخل نموذج آخر في CodeIgniter؟

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

سؤال

أنا أكتب تطبيق ويب باستخدام CodeIgniter الذي يتطلب المصادقة.لقد قمت بإنشاء نموذج يتعامل مع كل عمليات المصادقة الخاصة بي.ومع ذلك، لا يمكنني العثور على طريقة للوصول إلى نموذج المصادقة هذا من داخل نموذج آخر.هل هناك طريقة للوصول إلى نموذج من داخل وضع آخر، أو طريقة أفضل للتعامل مع المصادقة داخل CodeIgniter؟

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

المحلول

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

<?php
// in your controller
$model1 = new Model1();
$model2 = new Model2();
$model2->setWhatever($model1);
?>

نصائح أخرى

يبدو أنه يمكنك تحميل النماذج داخل النماذج، على الرغم من أنه ربما يتعين عليك حل هذه المشكلة بطريقة أخرى.يرى منتديات CodeIgniter للمناقشة.

class SomeModel extends Model
{
  function doSomething($foo)
  {
    $CI =& get_instance();
    $CI->load->model('SomeOtherModel','NiceName',true);

    // use $CI instead of $this to query the other models
    $CI->NiceName->doSomethingElse();
  }
}

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

لا تتعامل مع المصادقة في النموذج الخاص بك.استخدم النماذج فقط للتفاعل مع قاعدة البيانات الخاصة بك، أو ldap أو أي شيء آخر.

لقد قمت بإنشاء مكتبة مصادقة أستخدمها لإدارة المصادقة والترخيص.يمكنك الوصول إلى مكتبة مثل هذه من وحدات التحكم الخاصة بك.

أصبح من الممكن الآن تحميل نموذج داخل نموذج باستخدام CodeIgniter الجديد.

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