Класса "Mail" нет, но он работает.

Автор Necrosss, 10 ноября 2018, 16:20:26

« назад - далее »

Necrosss

Здравствуйте, пытаюсь разобраться как устроен PrestaShop.
Я пишу скрипт, который взаимодействует с движком (но не модуль) и понадобилось узнать кое какие технические детали..

Итак, допустим есть класс "Tools".
В папке "classes/" есть файл Tools.php, но класс, который там записан называется "ToolsCore", а уже класс "Tools" который основан на нём ("class Tools extends ToolsCore") располагается по адресу "tools/profiling/Tools.php".
То есть мы имеем 2 файла Tools.php. Один - "ToolsCore", второй - "Tools" и так почти для всех таких же классов.
И всё было логично пока я не столкнулся с функцией "Mail::Send()". Я сразу нашел класс "MailCore" ("classes/Mail.php"), а класс "Mail" я так найти и не смог, в папке "tools/profiling/" его нет. То же самое касается класса "Context".

Ради интереса открыл файл "cache/class_index.php" Классы Mail и Context там числятся, но в каких файлах прописаны там не указано.

При этом я точно знаю что несмотря на то что я не могу найти нужные файлы, код работает, письма отправляются и т.д.

Кто хорошо знает движок, прошу подсказать в чём хитрость ?

coder


Necrosss


coder

ToolsCore - класс движка, в папке /classes/
Tools extends ToolsCore - переопределенный класс, в папке /override/classes/
и так для всех

PrestaMan

ЦитироватьИ всё было логично пока я не столкнулся с функцией "Mail::Send()". Я сразу нашел класс "MailCore" ("classes/Mail.php"), а класс "Mail" я так найти и не смог, в папке "tools/profiling/" его нет. То же самое касается класса "Context".
http://doc.prestashop.com/display/PS16/System+Administrator+Guide
Классы в папке /classes/
Контроллеры в папке /controllers/
Если хотите переопредить, рассширить класс/контроллер, сохраняете его в папку /override/
В папке /tools/ содержит внешние инструменты, которые были интегрированы с PrestaShop.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!

Necrosss

#5
Цитата: PrestaMan от 10 ноября 2018, 19:37:26
Если хотите переопредить, рассширить класс/контроллер, сохраняете его в папку /override/
Я не хочу ничего переопределять. Я всего лишь хочу узнать в каком php-файле объявлен класс Mail и Context.

Я не уточнил сразу, но скрипт котрый я пишу, работает с файлами движка, но вне движка. То есть я классы сам подключаю вручную.

Adik


Necrosss

Цитата: Adik от 11 ноября 2018, 21:33:35
/classes/Context.php
/classes/Mail.php
Цитирую свой первый пост:
>>Я сразу нашел класс "MailCore" ("classes/Mail.php")

Файл Context.php тоже самое (там класс "ContextCore", а не "Context").

=========

На самом деле я уже решил проблему. Это было тяжело, но я справился.
Нужный код находился в файле "/classes/PrestaShopAutoload.php", конкретно в функции "load".

Я выложу сюда содержимое небольшого скрипта, который я написал на случай если вдруг кто-то столкнётся с такой же проблемой:

require(dirname(__FILE__).'/config/defines.inc.php');
require_once(_PS_CLASS_DIR_.'PrestaShopAutoload.php');

$classes = array(
'Core_Foundation_Database_EntityInterface',
'ObjectModel',
'Mail'
);

$PSAutoload = PrestaShopAutoload::getInstance();

foreach ($classes as $class)
{
$PSAutoload->load($class);
}


Это собственно всё.
Тему можно закрыть.

mAgency

<?php
include(dirname(__FILE__).'/config/config.inc.php');
include_once(
dirname(__FILE__).'/init.php');

/*
* свой код
*/
?>
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.