(PrestaShop) Правильный способ вызова статического метода из базового класса - PullRequest
0 голосов
/ 14 мая 2019

Один из основных файлов classes / 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

Что мне не хватает? И это правильный способ расширения класса и вызова метода?

Ответы [ 2 ]

0 голосов
/ 15 мая 2019

Вы можете назвать это просто так StockAvailable::getQuantityAvailableByProduct($id_product, $id_product_attribute).И если вы делаете свой модуль в соответствии с Документация , вам даже не нужно включать какие-либо файлы в начале вашего кода

0 голосов
/ 14 мая 2019

Файл 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);
?>
...