对Magento进行shell语言
有时候我们需要从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();
电商网站开发服务。