Mage:app と Mage:: の違いは何ですか?
例えば:
Mage::getModel('catalog/product');
Mage::app->getLayout->createBlock('catalog/product_view');
私がこのようにしようとすると
Mage::app->getModel('catalog/product');
致命的なエラーをスローします
基本的な違いは何ですか?
Mage:app と Mage:: の違いは何ですか?
例えば:
Mage::getModel('catalog/product');
Mage::app->getLayout->createBlock('catalog/product_view');
私がこのようにしようとすると
Mage::app->getModel('catalog/product');
致命的なエラーをスローします
基本的な違いは何ですか?
より一般的な説明とアランの答えへのさらなる説明として、Mage::app()
両方Mage::getModel()
ともMageクラスの静的メソッドです(app/Mage.php
)。
このMage::app()
関数は、Magento アプリケーションのブートストラップ (構成のセットアップ、自動ロードなど) に使用され、たとえば、独自のカスタム スクリプトで Magento モデルにアクセスする場合に役立ちます。
これは静的メソッドであるため、アプリケーションの任意の時点で呼び出して現在の Mage_Core_Model_App オブジェクトを返すこともできます。たとえば、現在の構成値を取得するために使用できます。たとえばMage::app()->getStore()
、現在のMage_Core_Model_Store
ストア オブジェクトを返します。
Mage::app()
ファイルにあるものと似ていMage::run()
ますindex.php
。違いはMage::run()
、MVC を呼び出したり、デフォルトでアプリケーションのルーティングなどの部分を呼び出したり、リクエスト/レスポンスを制御してページに誘導したり、ブロックやレイアウト テンプレートのレンダリングをインスタンス化したりすることです。
Mage::getModel()
指定したクラス エイリアスに基づいて、クラスの新しいインスタンスを返す単なるファクトリ メソッドです。たとえば、新しいオブジェクトMage::getModel('customer/customer')
を返します。Mage_Customer_Model_Customer
リクエスト全体で毎回同じオブジェクトを戻したい場合は、Mage::getSingleton()
代わりに使用できます。
あなたが言う時
Mage::getModel('catalog/product');
getModel
クラス Mage で静的メソッドを呼び出しています
#File: app/Mage.php
public static function getModel($modelClass = '', $arguments = array())
{
return self::getConfig()->getModelInstance($modelClass, $arguments);
}
あなたが言う時
Mage::app->getModel('catalog/product');
これは無効な PHP であるため、致命的なエラーが発生します。
ただし、言うなら
$app = Mage::app();
クラスで静的メソッドapp
を呼び出していますMage
public static function app($code = '', $type = 'store', $options = array())
{
if (null === self::$_app) {
self::$_app = new Mage_Core_Model_App();
self::setRoot();
self::$_events = new Varien_Event_Collection();
self::$_config = new Mage_Core_Model_Config();
Varien_Profiler::start('self::app::init');
self::$_app->init($code, $type, $options);
Varien_Profiler::stop('self::app::init');
self::$_app->loadAreaPart(Mage_Core_Model_App_Area::AREA_GLOBAL, Mage_Core_Model_App_Area::PART_EVENTS);
}
return self::$_app;
}
オブジェクトを返しMage_Core_Model_App
ます。これにより、クラス/オブジェクトの任意のメソッドを呼び出すことができます
app/code/core/Mage/Model/App.php