Вывести метод из другого класса opencart 2

234
27 января 2018, 00:01

Подскажите как вывести метод из system/library оба файла лежат в одной папке library

$customer = new Customer('library/customer');
$sub = $customer->getFirstName();
print_r($sub);

но почему то выдает ошибку

Answer 1

В OpenCart иначе это делается, там не нужно объявлять объект $customer = new Customer('library/customer'); Тем более вы пытаетесь в конструктор класса Customer передать просто строку, хотя он требует объект $registry.

Достаточно использовать

$sub = $this->customer->getFirstName();
print_r($sub);

Исходя из комментариев дополню свой ответ:

Вы пытаетесь из класса Url вызвать класс Customer. Конструктор класса Customer требует объект $registry, которого нет в классе Url. Тем не менее это можно реализовать следующим образом:

Добавить приватное свойство $registry для класса Url (в начале класса пропишите public $registry;) Добавить в конструктор __contruct дополнительный код, чтобы он выглядел так:

public function __construct($url, $ssl = '', $registry) {
        $this->url = $url;
        $this->ssl = $ssl;
        $this->registry = $registry; 
    }

Немного меняем файл /system/framework.php, находим строку сеттера Url, она выглядит примерно так:

// Url
if ($config->get('url_autostart')) {
    $registry->set('url', new Url($config->get('site_base'), $config->get('site_ssl')));
}

и добавляем в вызов Url тот самый $registry

// Url
if ($config->get('url_autostart')) {
    $registry->set('url', new Url($config->get('site_base'), $config->get('site_ssl'), $registry));
}

Теперь класс Url содержит нужный объект, осталось только правильно вызвать класс Customer

Вызывать его нужно добавляя в его конструктор $this->registry, то есть код будет выглядеть так

$customer = new Customer($this->registry);
$sub = $customer->getFirstName();
print_r($sub);

Однако! Нахрена это нужно делать я не понимаю.

Answer 2

В документации же есть: http://docs.opencart.com/developer/loading/

Т.е по сути: $this->load->library

READ ALSO
PHP, MySQL + PhoneGap/Cordova

PHP, MySQL + PhoneGap/Cordova

Здравствуйте Объясните, пожалуйста, принцип использования PHP и соответственно MySQL в приложении написанном на PhoneGap

138
Как добавить на сайт информер погоды текущего местоположения пользователя?

Как добавить на сайт информер погоды текущего местоположения пользователя?

Хочу добавить на сайт простейший информер погоды текущего местоположенияДля этого в качестве кросс-доменного api взял openweathermap, зарегистрировался...

206
Как вывести в twig функцию substr()?

Как вывести в twig функцию substr()?

Я поставил Twig, на чистый PHP, передал туда параметры и возник такой вопрос:

186
Объясните насчёт filter_input

Объясните насчёт filter_input

Не могу разобраться как работает php функция filter_inputНемного разобрался в PHP, но в документации дается тяжело

164