使用 class 的面向对象 PHP 问题,涉及 PrestaShop 模块
Object Oriented PHP issues using a class, involving PrestaShop module
我想完成的事情
我正在更改 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.
}
我得到的行为
第一个 echo 有效,但是一旦我调用 $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 的某些内容,但经过大量研究和调整后,我在这一点上没有取得任何进展。
这不是 OOP 问题,而是 PrestaShop 的设计决定。
试试:
$exporter = Module::getInstanceByName('order_exporter');
而不是:
$exporter = new order_exporter;
此处 'order_exporter' 是您的模块名称(即来自 class 的名称 属性)。
我想完成的事情
我正在更改 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.
}
我得到的行为
第一个 echo 有效,但是一旦我调用 $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 的某些内容,但经过大量研究和调整后,我在这一点上没有取得任何进展。
这不是 OOP 问题,而是 PrestaShop 的设计决定。
试试:
$exporter = Module::getInstanceByName('order_exporter');
而不是:
$exporter = new order_exporter;
此处 'order_exporter' 是您的模块名称(即来自 class 的名称 属性)。