CodeIgniter'daki Kalıtım

2 Cevap php

Ben formların bir dizi inşa ediyorum ve ben tüm formları içine bir ana form sınıfının işlevselliğini miras çalışıyorum. Örneğin,

LeaveForm extends Form (Model)

LeaveFormController extends FormController

I LeaveFormController tüm izin formu, belirli malzeme taşıma ve LeaveForm. Am

LeaveFormController Yapıcıda, ben sadece o LeaveForm Model yüklemek, üst sınıf kurucusunu diyoruz. Ve FormController yapıcısındaki, ben Form modeli yüklenemedi.

Benim sorunum ben bir hata alıyorum, bir,

Form.php sınıf formu Redeclare

Mimari benim yanlış var mı? Bunu nasıl hallederiz?

2 Cevap

sınıf zaten bu gibi başlatılan olup olmadığını kontrol edin:

if (!class_exists('classname'))
{
    // ok fine create new instance now
}

Muhtemelen $this->load->model('Form'), elle include models/form.php dosya d alıyorsunuz?

Için leaveform.php model dosyası, size CodeIgniter'ın Model yükleme mekanizmasını kullanarak yerine require veya include uzatmak üst sınıf model yüklediğinizden emin olun. Codeigniter redeclaring sınıfları önlemek için zaten yüklü dosyaları izler bir yükleyici var, ama $this->load bunu kullanmanız gerekir. Bu include veya require ile doğrudan yüklenen dosyalar hakkında bilemezsiniz.

leaveform.php, bu kullanmak üstündeki Yani:

$CI =& get_instance(); $CI->load->model('Form');

Eğer CodeIgniter modeli sınıfları Eğer Kontrolör sınıfları namespace aynı şekilde namespace sürece This is not related, ama acı olacak.

FormModel extends CI_Model {}; yerine Form extends CI_Model {}; kullanmayı deneyin