Nasıl kod ateşleyici controller sınıfı uzatır mı?

2 Cevap php

Benim CI sistemi \ kütüphaneleri dizininde ben DD_Controller.php adında yeni bir sınıf var. Bu dosya, bu gibi görünüyor:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class DD_Controller extends Controller 
{   
    protected $ddauthentication;


    function __construct()
    {			
    	parent::Controller();
    	$this->ddauthentication = "Authenticated";
    }
}
?>

Benim uygulama kontrolörü bu gibi tanımlanır:

class Inquiry extends DD_Controller 
{...}

Ben Kontrolörü uzatmak zaman Sorgulama sınıfı çalışıyor, ama olsun

Fatal error: Class 'DD_Controller' not found in C:\development\localhost\applications\inquiry\controllers\inquiry.php on line 4

Ben DD_Controller uzatmak zaman. Config dosyasındaki ben gibi tanımlanan öneki var:

$config['subclass_prefix'] = 'DD_';

Kaçırdığım ne herhangi bir fikir?

TIA

2 Cevap

DD_Controller.php olmalıdır / sistem / uygulama / kütüphaneleri /

Eğer birden çok uygulama için aynı CI kullanıyorsanız, ve bunları tüm özel birine kendi denetleyicileri uzanır edebilmek istiyorsanız o zaman aynı dosyada baz Denetleyici sınıfını genişletebilirsiniz.

Sistem / kütüphanelerde / Controller sınıfından aşağıda Controller.php:

class Mega_Controller extends Controller {
    function Mega_Controller()
    {
        parent::Controller();
        // anything you want to do in every controller, ye shall perform here.
    }
}

Sonra app denetleyicileri bunu yapmak mümkün olacak:

class Home extends Mega_Controller {
    ....

Oluşturduğunuz genişletilmiş denetleyici sınıf sunulacak beri. Ben bu baz denetleyicisi üzerine yazmasını o zaman daha iyi olduğunu düşünüyorum, ama bu kadar iyi çalışır.

I recommend to avoid "cracking" CodeIgniter core files. Better use its native extending possibilities and try to fit into them.

The same rule I would recommend for any PHP library / CMS. This rule has few reasons: - ability to quiclky upgrade without takint into account thousands of notes where and how was cracked in core files; - portability; - possibility to share your code - eg, this will be usable by both you and your friends in case of need, and it will help them to keep their library up to date, the same as you.

Diğer bir deyişle, bu çok daha profesyonel ve kullanılabilirlik, taşınabilirlik tarafından ve güncelleştirme uygulama imkanı ile gelecekte size öder.

Kişisel soruya gelince ...

Bana gelince, sen CodeIgniter'ın Denetleyicisi uzatmak için gereken her şeyi ile kendi kütüphane oluşturmak için kötü bir şey yok, o Kontrolörün yapıcısında Bu kütüphaneyi yüklemek ve bitirdiniz. Daha iyi kullanılabilirlik yapmak için tek şey kütüphaneye kısa bir ad vermektir.

This way you can even divide what you need in different pieces and put into separate libraries: WebFeatures AdminFeatures etc.

Sonra sadece denetleyicisinin kurucudaki gerekli kütüphaneleri yüklemek ve bitirdiniz.

P.S. Ben önerilen yol "doğru" cepten kavramına uymuyor biliyorum, ama aynı zamanda size kullanılan kütüphanelerin bütünlüğü konusunda asla unutmamalıyız.

Yukarıdaki her şey benimki profesyonel web geliştirme 7 yıl deneyim sadece bir görüntüsüdür, bu yüzden en azından dikkate almak, sonra takip etmek değil, eğer yardımcı olacağını umuyoruz.

Regards, Anton