2010-11-15 20 views
1

J'utilise actuellement CodeIgniter pour supporter un site, dont le but principal est d'afficher plusieurs tables de tableskit éditables, et de gérer l'AJAX qui arrive quand vous les éditez. Une sorte de PHPMyAdmin [VERY] Lite. Il a un certain nombre d'assistants et de contrôleurs de base, qui exécutent les principaux travaux du site, mélangés avec des contrôleurs et des assistants spécifiques au site.Puis-je étendre le système principal de codeigniter, pour utiliser mes fonctions personnalisées sur plusieurs sites?

Je voudrais restructurer mon site afin que je puisse réutiliser la base de code principale dans un autre site. Cependant, je voudrais toujours avoir quelques fonctions de contrôleur par défaut et quelques fonctions de cutsom dans le même contrôleur; par exemple dans un fichier système quelque part:

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

et sur un seul 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

Répondre

3

Si vous utilisez 2.0 CodeIgniter vous pouvez atteindre la plupart de cela avec des packages. Ils vous permettront de charger des assistants, des bibliothèques et des modèles de n'importe où, donc dans chaque application, configurez simplement un paquet à 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 corrects (d'abord local, puis la structure de dossiers partagés), tout devrait bien fonctionner.

+0

Merci, Où puis-je trouver le code pour CodeIgniter 2.0 – lemiant

+0

Nevermind, je l'ai trouvé sur BitBucket – lemiant

1

Je ne sais pas si cela vous est toujours utile, mais voici ce que j'ai fait. Dire que j'ai 2 sites Web, palladium.com et osmium.com.

mon arbre fichier ressemble à ce

/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 j'ai 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 je peux osmium.com appel

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

et "ceci est un test du système de diffusion d'urgence" apparaîtra.