Utiliser des interfaces PHP dans Codeigniter
Je suis en train d'essayer de trouver comment puis-je utiliser PHP interfaces dans mon MVC conception. Je veux faire en sorte que la conception met en œuvre une interface de sorte que tout nouveau module de le suivre.
Par exemple:
<?php
interface BaseAPI {
public function postMessage($msg);
}
class ServiceAPI implements BaseAPI {
public function postMessage($msg) { return $msg; }
}
class Service_Two_API implements BaseAPI {
public function postMessage($msg) { return "can't do this: ".$msg; }
}
?>
Je veux le faire en CI. Est-il possible? comment dois-je concevoir ce?
source d'informationauteur Obaid
Vous devez vous connecter pour publier un commentaire.
Dépend de ce que vous demandez. Si vous vous demandez si vous pouvez faire le Code de l'Allumeur cadre de suivi de vos Interfaces, vous pouvez, mais elle aurait besoin d'un tas de refactoring dans leur cadre, et ne serait probablement pas la peine.
Si vous vous demandez si vous pouvez ajouter des Interfaces pour vos classes personnalisées tout en utilisant du Code de l'Allumeur, bien sûr, vous pouvez. De CI, de ne pas limiter votre capacité à créer un code personnalisé, en fait, qu'est ce que ça existe. Je suppose que la vraie réponse est "Que demandez-vous?".
Voici Comment Obtenir CodeIgniter à la Charge des Interfaces Correctement
Dans votre application/config/autoload.php:
Maintenant créer une nouvelle classe dans votre application/dossier de modèles "interface_autoloader.php":
Maintenant, créez un nouveau dossier dans votre dossier d'application appelé "interfaces":
Puis il suffit d'ajouter vos interfaces dans les "interfaces" du dossier et vous devriez être en mesure de les utiliser comme de la normale.
Je suis en utilisant des interfaces dans mon codeigniter projet. Je viens de le faire:
Certaines classes doivent s'étend un personnel Contrôleur, j'ai donc créé la librarie appelé Module_Controller s'étend Contrôleur. Cette bibliothèque est chargé.
Dans le même fichier, j'ai été déclaré l'interface. Donc, mon fichier libraries/Module_Controller.php a le code suivant:
De cette façon, lorsque ce fichier est chargé, l'interface sera déclarée pour tout le monde.
Vous pouvez créer
MY_Loader
classe étendCI_Loader
en application/de base et de prendre la charge de vos interfaces.A ici un exemple: http://heatherevens.me.uk/2013/11/11/interfaces-in-codeigniter/
Votre Interface fonctionne très bien... tout Simplement require_once au-dessus du contrôleur qui va l'utiliser, puis déclarer une nouvelle instance de partir dans le contrôleur...
Contrôleur De Fichier:
Pour être honnête, vous voudrez probablement être en mesure de faire une sorte d'injection de dépendance, mais étant donné que je ne pas utiliser codeigniter, je ne suis pas sûr de comment il est facile de simuler une Usine pour la personne à charge les appels à l'Interface des classes.
Laissez-moi vous donner un exemple:
Injection De Dépendance:
Usine Fichier
Contrôleur De Fichier: