Puis-je étendre le système de base de CodeIgniter, d'utiliser mes fonctions personnalisées sur plusieurs sites?

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

Question

Je suis actuellement en utilisant CodeIgniter pour soutenir un site, dont le but principal est d'afficher plusieurs tables de tablekit modifiables, et gérer l'AJAX qui arrive lorsque vous les modifiez. Une sorte de PHPMyAdmin [très] Lite. Il dispose d'un certain nombre d'aides de base et les contrôleurs, qui se déplacent le fonctionnement principaux du site, mélangé avec certains contrôleurs spécifiques du site et des aides.

Je voudrais restructurer mon site afin que je puisse réutiliser le code de base de noyau dans un autre site. Cependant, je voudrais être encore avoir des fonctions de contrôleur par défaut et certaines fonctions cutsom dans le même contrôleur; à-dire dans un fichier système quelque part:

class My_core extends Controller{
    /*
      Lots of base functions
    */
}

et sur un site:

class site_1 extends My_Core{
    /*
       Site specific functions
    */
}

Ensuite, sur l'autre site:

class site_2 extends My_Core{
    /*
       Site specific functions
    */
}

Quelqu'un at-il des conseils sur la façon dont je peux le faire?

Merci,

Lemiant

Était-ce utile?

La solution

Si vous utilisez CodeIgniter 2.0, vous pouvez atteindre la plupart de cela avec des packages. Ils vous permettent de charger des aides, des bibliothèques et des modèles de partout, donc dans chaque application configurer simplement un paquetage à charger à partir de ce dossier partagé.

En ce qui concerne les bibliothèques de base (qui sera MY_Controller) vous devrez implémenter votre propre fonction __autoload ():

http://php.net/manual/en/language.oop5. autoload.php

Vous pouvez mettre un chargeur automatique au bas de config.php. Tant qu'il vérifie les dossiers appropriés (première locale, la structure de dossier partagé) il se doit tous les travaux très bien.

Autres conseils

Je ne sais pas si cela est encore utile pour vous, mais voici ce que je l'ai fait.

dire que j'ai 2 sites, palladium.com et osmium.com.

mon apparence arbre de fichiers comme celui-ci

/var/www/system/ (the CI system folder)

/var/www/palladium/application
/var/www/palladium/public/index.php

/var/www/osmium/application
/var/www/osmium/public/index.php

dans ces fichiers index.php sont des lignes qui définissent où / système / est stocké. J'ai cet ensemble à

$system_folder = "../../system";

Maintenant dans / var / www / système / bibliothèques i ont un fichier nommé MY_TestClass

<?php

class MY_TestClass {
    public function MY_TestClass() {
        echo "this is a test of the emergency broadcast system";
    }
}

De partout l'intérieur des deux palladium.com et osmium.com je peux appeler

$this->load->library('MY_TestClass');

et « ceci est un test du système de diffusion d'urgence » sera affiché.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top