(PrestaShop)从核心类调用静态方法的正确方法



其中一个核心文件class/stock/StockAvailable.php包含:

class StockAvailableCore extends ObjectModel
{
public static function getQuantityAvailableByProduct($id_product = null, $id_product_attribute = null, $id_shop = null)
{
...
}
...
}

我想从我的模块调用这个getQuantityAvailableByProduct()方法。

所以我尝试包含这个类(它是父类和父类的接口),扩展它并调用方法,如下所示:

require_once('../../src/Core/Foundation/Database/EntityInterface.php');
require_once('../../classes/ObjectModel.php');
require_once('../../classes/stock/StockAvailable.php');
$MyClass = new StockAvailableCore();
$MyClass->getStockAvailableIdByProductId($id);

以及我得到的错误:

PHP Fatal error:  Uncaught Error: Class 'ObjectModel' not found in /home/mantas/Server/honey/classes/stock/StockAvailable.php:34

我错过了什么?这是扩展类和调用方法的正确方法吗?

ObjectModel.php file

<?php
class ObjectModel{
//For example I created non-static function in ObjectModel class
public function getStockAvailableIdByProductId($id){
return "test";
}
//For example I created static function in ObjectModel class
public static function getStockAvailableIdByProductIdStatic($id){
return "teststatic";
}
}
?>

库存可用.php文件。

<?php
//Extends used to inherit the parent class property
class StockAvailableCore extends ObjectModel
{
public static function getQuantityAvailableByProduct($id_product = null, $id_product_attribute = null, $id_shop = null)
{
}
}

?>

运行.php文件

<?php
require_once('ObjectModel.php');
require_once('StockAvailable.php');
$MyClass = new StockAvailableCore();
// Access the ObjectModel function
//to access the  Non-static method need to create the object.
echo $MyClass->getStockAvailableIdByProductId($id);
//Static method access by class reference (::)
echo StockAvailableCore::getStockAvailableIdByProductIdStatic($id);
?>

你可以这样称呼它StockAvailable::getQuantityAvailableByProduct($id_product, $id_product_attribute).如果你根据文档制作你的模块,你甚至不需要在代码的开头包含任何文件

最新更新