Как вызвать класс для другого в Prestashop 1.7

Как вызвать класс для другого в Prestashop 1.7

18.11.2018 11:42:08 Просмотров 50 Источник

Я создаю модуль PrestaShop 1.7. Например, mymodule.РНР. В этом модуле у меня есть _ _ construct и

require_once(dirname(__FILE__).'/classes/mymodule_class.php');

В классах папок (в моем собственном модуле) я создаю файл mymodule_class.РНР

if (!defined('_PS_VERSION_')) {
    exit;
}

class mymodule_class{

    protected static $module = false;

    public function test(){
        return 'test';
    }
 }

В другом модуле я хочу вызвать функцию "тест" :

print_r(mymodule_class::test)

или

$mymodule_class = new mymodule_class();
print_r (mymodule_class->test());

Но у меня есть ошибка:

Предпринята попытка загрузить класс "mymodule_class" из глобального пространства имен. Вы забыли инструкцию" использовать"?

Я не понимаю этого сообщения. В моем варианте все должно быть в порядке. спасибо за помощь.

У вопроса есть решение - Посмотреть?

Ответы - Как вызвать класс для другого в Prestashop 1.7 / How to call a class for another in Prestashop 1.7

Matt Loye

19.11.2018 01:32:16

В другом модуле вы можете вызвать файл, если класс не существует с таким кодом :

<?php

     $module_class_filename = _PS_MODULE_DIR_.'mymodule/mymoduleclass.php';         

     if (class_exists('mymoduleclass') || file_exists($module_class_filename)) {
        // You can call the object
        $mymodule = new mymoduleclass();
     } else {
        // You cannot
     }
 ?>

Пожалуйста, не забудьте добавить конструктор и попытаться уважать формат генератора валидатора для модулей ( https://validator.prestashop.com/generator ) чтобы сделать его совместимым со стандартами разработки Prestashop.

Meraj Ahamad

06.12.2018 05:13:30

В файле другого модуля, где вы вызываете функцию класса mymodule_class Добавь
include_once _PS_MODULE_DIR_.'yourmodulename/classes/mymodule_class.php';

Пожалуйста, добавьте эту строку в верхней части файла.

Michael Käfer

10.12.2018 10:37:04

Вызвать метод:

$myModule = Module::getInstance('MyModule');
$myModule->myMethod();

Вызов статического метода:

MyModule::myStaticMethod();
Закрыть X