Tout d'abord, avant de nous rendre à Magento, il est important de comprendre que PHP a radicalement différent du modèle de processus de Java. PHP singleton (indépendamment de Magento participation) est en une seule instance d'une classe par Requête HTTP. Un programme PHP n'est pas persistant dans la mémoire de la même façon qu'un programme Java est, afin d'ajuster vos attentes d'un "singleton" en conséquence.
Ensuite, il est important de comprendre que Magento est un cadre de travail intégré sur le dessus de PHP, à l'aide de PHP, et dans de nombreux cas, l'original de développeurs Magento voulu pousser les choses vers une plus Java comme de l'architecture. Donc, vous allez voir des choses qui vous paraissent familiers, sont familiers, mais susceptible de varier à la manière de ce que vous êtes habitué parce qu'ils ont encore besoin de le tailler à PHP version de l'univers.
Magento utilise un modèle de fabrique pour instancier des Aides, des Blocs, et le "Modèle" des classes. La chaîne
core/session
est une classe d'alias. Cet alias est utilisé pour la recherche d'un nom de classe dans Magento configuration. En bref, cette chaîne est convertie en chemin expressions de recherche de Magento fichiers de configuration pour dériver un nom de classe, en fonction du contexte (aide, bloc, modèle), il avait été appelé. Pour une version plus complète, voir mon Magento de l'Instanciation de Classe de chargement automatique de l'article.
Le concept de "Modèle" est un peu floue dans Magento. Dans certains cas, les modèles sont utilisés en tant que domaine, ou les modèles de service. Dans d'autres cas, ils sont utilisés comme des moyens plus traditionnels middleware de base de données de la persistance des modèles. Après avoir travaillé avec le système pendant quelques années, je pense que la façon la plus sûre de penser à des Modèles est qu'ils sont de Magento tenter de faire disparaître direct de l'instanciation de classe.
Il y a deux façons d'instancier une classe de modèle.
Mage::getModel('groupname/classname');
Mage::getSingleton('groupname/classname');
Le premier formulaire, vous obtenez une nouvelle instance de classe. Le deuxième formulaire vous permet d'obtenir une instance de la classe singleton. Cette Magento abstraction permet de créer un singleton de toute Magento modèle de classe, mais seulement si vous vous en tenez à Magento instanciation des méthodes. C'est, si vous appelez
Mage::getSingleton('groupname/classname');
les appels suivants à
Mage::getSingleton('groupname/classname');
sera de retour que l'instance du singleton. (Ceci est mis en œuvre avec un modèle de registre). Cependant, il n'y a rien qui vous empêche d'directement de l'instanciation d'une nouvelle instance de la classe avec soit
$o = Mage::getModel('groupname/classname');
$o = new Mage_Groupname_Model_Classname();
Ce qui nous amène à des séances. PHP la demande de modèle, comme HTTP, a été conçu à l'origine pour être apatrides. Chaque demande est livré dans le système, et seulement avec l'information de l'utilisateur. Comme la langue (et le web) se sont déplacés vers une plate-forme d'application, un système qui permettait à l'information d'être persisté a été introduit pour remplacer les systèmes "maison" ont été créées. Ce système a été appelé sessions. PHP séances de travail en exposant un super global $SÉANCES de tableau à la fin de l'utilisateur-programmeur qui permettent de stocker des informations par le web de l'utilisateur. Les Sessions sont mis en œuvre en mettant un ID unique dans un cookie sur l'utilisateur final, et puis en utilisant le cookie comme une recherche de la clé (également de pratique courante pour les applications web)
À son tour, le système Magento construit une abstraction sur le dessus de PHP à la session de l'abstraction. Dans Magento, vous pouvez créer un "modèle de session" qui hérite d'une base de classe session, des données de jeu de membres sur elle, et d'enregistrer/charger les données des membres, comme vous le feriez avec une base de données de la persistance du modèle. La différence est de l'information est stockée dans la session au lieu de la base de données du magasin. Quand vous voyez
core/session
customer/session
ce sont deux différents session de modèles, chacun le stockage de données différentes. L'une appartient à l'Mage_Core module, l'autre appartient à la Mage_Customer modèle. Ce système permet aux modules de sûre et de manipuler leur propre session de données, en évitant de marcher sur un autre module, les orteils, et de fournir des logiques de classe de méthodes pour la manipulation des données.
Espérons que les réponses aux questions que vous avez posées, ainsi que celles que vous n'avez pas.