(PrestaShop)从核心类调用静态方法的适当方法

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (28)

其中一个核心文件 类/ 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文件

<?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";
        }

    }
   ?>

StockAvailable.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)
         {

         }

    }


    ?>

run.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);
?>

扫码关注云+社区

领取腾讯云代金券