问题描述
在 mydockercontainer:<mysite>/web/
中,这是我的 Nginx 服务器 Docker 容器的公共目录,我正在编写一个 PHP 脚本,它包含一个简单的类,来自 Prestashop 1.6/1.7(站点是 Prestashop 1.7,但我想要出于项目原因,在 1.6 中编写代码)。
这个“简单的类”是:mydockercontainer:<mysite>/web/gateway/gateway.PHP
。正如你所看到的,它不是一个模块,也不是一个控制器的覆盖,或者其他与 Prestashop 相关的东西。它只是一个普通的 PHP 脚本。
然而,这个脚本 gateway.PHP
需要使用一些 Prestashop 的对象。例如Order
。
当我尝试实例化 Order
时,出现此错误:
致命错误:未捕获错误:在 /var/www/html/gateway/requestHandler.PHP:47 中找不到类“Order” 堆栈跟踪:#0 /var/www/html/gateway/requestHandler.PHP(17) : RequestHandler->handleOrderUpdate() #1 /var/www/html/gateway/wakeup.PHP(5): RequestHandler->handleRequest() #2 {main} 扔在 /var/www/html/gateway/gateway.PHP第 47 行
因此在此脚本的开头,我添加了以下行:require_once '../autoload.PHP';
。它引发了一个新错误:ERROR 500 但我无法弄清楚日志。
请注意,我的 PHP 脚本没有任何命名空间,因为它在 Prestashop 之外。
我该怎么做才能在不是 Prestashop 控制器/模块/等的简单 PHP 脚本中使用对象 Prestashop 1.6/1.7(偏好:1.6)类,例如 Object
。 ?
代码片段
文件:mydockercontainer:<mysite>/web/gateway/gateway.PHP
(web
是我的 Prestashop 1.7 站点的公共目录):
<?PHP
require_once '../autoload.PHP';
class Gateway {
private $request;
private function handleOrderUpdate() {
$ps_order = new Order($this->request['id']);
}
}
解决方法
为了启动 Prestashop 核心并在外部脚本中使用 PS 对象,您需要包含
../config/config.inc.php
包含 autoload.php 将不起作用。