使用类的面向对象的PHP问题,涉及PrestaShop模块

时间:2015-07-15 18:45:01

标签: php oop prestashop prestashop-1.6

我想要完成的事

我正在改变一个PrestaShop模块,该模块目前使用用户提交的表单生成文件作为独立的CRON作业。该模块在后台完美运行,只需用户点击按钮即可;一个重复的任务,应由CRON工作处理(当然,不是点击按钮)。

我正在尝试

if (!defined('_PS_VERSION_')) {
    // Initialize prestashop
    require_once '../../config/config.inc.php';
    require_once '../../init.php';

    define('_PS_MODE_DEV_', true);
    echo 'This gets echoed';
    $exporter = new order_exporter;
    echo 'This does not get echoed';
}

class order_exporter extends Module
{
    // Rest of code here. Works when used with back office.
}

我的行为

第一个回音有效,但是一旦我调用$exporter = new order_exporter;,我就会收到此错误。 PHP Fatal error: Class 'order_exporter' not found in C:\wamp\www\addressstamps\modules\order_exporter\order_exporter.php。这不在屏幕上,只在我的错误日志中。正如我过去所理解的,这是使用OOP的正确方法。我不确定我是否误解了有关Prestashop,OOP或Scope的内容,但经过大量研究和调整后,我在这一点上没有取得任何进展。

1 个答案:

答案 0 :(得分:1)

这不是OOP问题,而是PrestaShop设计决定。

尝试:

$exporter = Module::getInstanceByName('order_exporter');

而不是:

$exporter = new order_exporter;

这里'order_exporter'是你的模块名称(即类中的name属性)。