有时候我们需要从Magento外部访问Magento系统。一种方式是使用PHP shell语言引导Magento。一个普通PHP开发者会在自己代码的底部创建一个引导文件来访问Magento根目录。如你猜测的一样,有两种引导Magento的方式,常用方式和Magento方式。在这篇文章中,我们将概述如何以Magento的方式创建PHP shell脚本来引导Magento。 对于初学者来说,这里是引导Magento的常规方法(Magento中index.php中使用的): require_once 'app/Mage.php'; Mage::app(); // Our own code goes here 虽然这种方法没有错误,但是和Magento方式相比有些不足。 The Magento way现在,让我们看看用Magento方式来实现。如果你访问Magento根目录下shell文件夹,你会发现一些"Magento方式的"shell语言。比如,你有index.php可以使用所选的索引来重建索引,或者compiler.php去控制Magento编译器功能状态。如果你看了PHP shell脚本,你会看到在abstract.php文件包含Mage_Shell_Abstract类和其所包含、扩展Mage_Shell_Abstract类。 有些人想知道这样比单纯请求Mage.php好在哪。特别是当你看到Mage_Shell_Abstract结构体后,发现做的同样的事情。 使用Magento方式的有点之一是Mage_Shell_Abstract类提供解析命令行参数。第二,Mage_Shell_Abstract结构体会调用Mage_Shell_Abstract::__applyPhpVariables() function函数来解析.htaccess文件并应用php设置到shell脚本。 执行过程很明显。我将粘贴出Magento PHP shell脚本的骨架类: <?php require_once 'abstract.php'; class Inchoo_Shell_Myscript extends Mage_Shell_Abstract { protected $_argname = array(); public function __construct() { parent::__construct(); // Time limit to infinity set_time_limit(0); // Get command line argument named "argname" // Accepts multiple values (comma separated) if($this->getArg('argname')) { $this->_argname = array_merge( $this->_argname, array_map( 'trim', explode(',', $this->getArg('argname')) ) ); } } // Shell script point of entry public function run() { } // Usage instructions public function usageHelp() { return << Argument description help This help USAGE; } } // Instantiate $shell = new Inchoo_Shell_Myscript(); // Initiate script $shell->run();(责任编辑:好模板) |