ম্যাজেন্টোর কারখানার পদ্ধতিগুলিতে সম্পূর্ণ শ্রেণীর নাম


11

ম্যাজেন্টো 1-এ, আমি যদি কারখানার পদ্ধতিতে পুরো ম্যাজেন্টো শ্রেণীর নাম ব্যবহার করি তবে আমি কোনও বস্তুকে তাত্ক্ষণিকভাবে সক্ষম করতে সক্ষম

//trying full class name instead of catalog/product
$object = Mage::getModel('Mage_Catalog_Model_Product');

তবে, একই জিনিস সাহায্যকারীদের জন্য কাজ করবে না। যদি তুমি চেষ্টা কর

Mage::helper('Mage_Core_Helper_Url');

তুমি পাও

Warning: include(Mage/Mage/Core/Helper/Url/Helper/Data.php): failed to open stream: No such file or directory  in /path/to/magentolib/Varien/Autoload.php on line 93

#0 /path/to/magentolib/Varien/Autoload.php(93): mageCoreErrorHandler(2, 'include(Mage/Ma...', '/path/to/magent...', 93, Array)
#1 /path/to/magentolib/Varien/Autoload.php(93): Varien_Autoload::autoload()
#2 [internal function]: Varien_Autoload->autoload('Mage_Mage_Core_...')
#3 /path/to/magentoapp/Mage.php(547): spl_autoload_call('Mage_Mage_Core_...')
#4 /path/to/magentoapp/code/local/Sebastianjuffar/Commercebug/controllers/IndexController.php(11): Mage::helper('Mage_Core_Helpe...')
#5 /path/to/magentoapp/code/core/Mage/Core/Controller/Varien/Action.php(418): Sebastianjuffar_Commercebug_IndexController->indexAction()
#6 /path/to/magentoapp/code/core/Mage/Core/Controller/Varien/Router/Standard.php(250): Mage_Core_Controller_Varien_Action->dispatch('index')
#7 /path/to/magentoapp/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#8 /path/to/magentoapp/code/core/Mage/Core/Model/App.php(354): Mage_Core_Controller_Varien_Front->dispatch()
#9 /path/to/magentoapp/Mage.php(684): Mage_Core_Model_App->run(Array)
#10 /path/to/magentoindex.php(87): Mage::run('', 'store')
#11 {main}

কি হচ্ছে?


2
আপনি টুইটার থেকে এটি পেয়েছেন না? :)
মারিয়াস

1
@ এমরিয়াস আপনি আমাকে এতে মারধর করেছেন। টুইটার-প্রশ্ন-হিসাবে একটি সেবা।
ফিলিউঙ্কল

@ মারিয়াস হ্যাঁ - টুইটারে আমি যে প্রশ্নগুলি পেয়েছি সেগুলি পরিবর্তে এখানে আসতে উত্সাহিত করার চেষ্টা করছি।
অ্যালান ঝড়

উত্তর:


8

খাঁটি কোডিং দৃষ্টিকোণ থেকে, আপনি যদি getModelClassNameপদ্ধতিটি দেখুন (কিছু স্ট্যাক থেকে কলটি কল করুন Mage::getModel)

public function getModelClassName($modelClass)
{
    $modelClass = trim($modelClass);
    if (strpos($modelClass, '/')===false) {
        return $modelClass;
    }
    return $this->getGroupedClassName('model', $modelClass);
}

আপনি দেখতে পাবেন যে ম্যাজেন্টো যদি /ক্লাস ওরফে কোনও কিছু না দেখে , এটি ধরে নেওয়া হয় এটি একটি পুরো শ্রেণীর নাম। তবে, যদি getHelperClassNameফাংশন

public function getHelperClassName($helperName)
{
    if (strpos($helperName, '/') === false) {
        $helperName .= '/data';
    }
    return $this->getGroupedClassName('helper', $helperName);
}

যদি ম্যাজেন্টো কোনও /ক্লাসের ওরফে একটি দেখতে না পান তবে এটি ধরে নেওয়া হয় আপনি সংক্ষিপ্ত রূপটি ব্যবহার করছেন

Mage::helper('catalog')

এবং dataউপনামের শেষে একটি যুক্ত করে যাতে বর্গটি সঠিকভাবে ( catalog/dataথেকে Mage_Catalog_Model_Data) সমাধান করে।

এটি সংক্ষিপ্ত ফর্ম সহায়কগুলিকে সক্ষম করে, তবে ম্যাগান্টোর পক্ষে একটি শর্ট ফর্ম সহায়ক ওরফে এবং একটি দীর্ঘ ফর্ম শ্রেণীর নামের মধ্যে পার্থক্য বলা অসম্ভব করে তোলে।

এর চূড়ান্ত "কেন" সম্ভবত পিন করা শক্ত - পুরো বর্গের নাম ইনস্ট্যান্টেশন এমনভাবে কাজ করে যে কোনও বিকাশকারী থেকে সুরক্ষামূলক কোডিং অনুশীলনের একটি পার্শ্ব প্রতিক্রিয়া হতে পারে যা প্রতিটি মডিউলের জন্য অন্য বিকাশকারীর আকাঙ্ক্ষার সাথে সঙ্গতিপূর্ণ ছিল না were একটি "প্রধান" সহায়ক শ্রেণি। এটি যেতে পারে এমন একক ওভারওয়র্কড বিকাশকারী দ্রুত সিদ্ধান্ত নিতে পারে। কোথাও কোথাও না কোথাও প্রকল্প পরিচালনা এবং সিস্টেম বিকাশের পাঠ রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.