$("#btn_ps").click(function(e) {
e.preventDefault();
_this = $("#email");
if (_this.val() != "") {
var pattern = /^(?!.*@.*@.*$)(?!.*@.*\-\-.*\..*$)(?!.*@.*\-\..*$)(?!.*@.*\-$)(.*@.+(\..{1,11})?)$/;
if (_this.val() != "" && pattern.test(_this.val())) {
_this.tooltip('disable');
_this.removeClass("error_message");
_this.attr('title', '');
_this.attr('data-original-title', '');
var form_data = $("#personalsale").serialize();
$.ajax({
type: "POST",
url: "/index.php?route=common/home/personal_form",
data: form_data,
success: function() {
$("#personal_sale_p").html('<span class="success_alert"><i class="fas fa-check-circle"></i> Вы успешно подписались на рассылку.</span>');
$('#personalsale').trigger( 'reset' );
},
error: function() {
$("#personal_sale_p").html('<span class="success_alert"><i class="fas fa-times-circle"></i> Что-то пошло не так...</span>');
}
});
}
else {
_this.tooltip('enable');
_this.attr('title', '');
_this.addClass("error_message");
_this.attr('data-original-title', 'Проверьте введённые данные');
}
}
});
exec('google-chrome --headless --no-sandbox --disable-gpu --print-to-pdf=путь_куда_класть_пдф.pdf --no-margins путь_где_брать_хтмл.html --virtual-time-budget=50000 >куда_писать_лог.log 2>&1');
Я понимаю, что вы только-только открыли для себя ООП и теперь применяете где надо и где не надо.спасибо за комплимент, но я давно вышел из возраста когда от любой новой освоенной фичи впадаешь в щенячий восторг, да и за овер 15 лет в программировании кое-что для себя вывел, чем и делюсь тут.
В современных языках ООП вообще не стали делать - Rust, Go.не надо путать хрен с пальцем, то что в го нет объектов в явном виде не означает что он не объектно ориентированный. Там нет наследования, но вместо него есть имплементация. А для инкапсуляции используются структуры. Если вы не в курсе - ооп не реализация, а парадигма и метод структурирования, а не классы и объекты.
Это модульная система. Это не стандартный проект.не вижу противоречия, в любом проекте есть стандартные компоненты, тот же CRUD, работа с хранилищами, авторизация. логирование, маршрутизация и много еще чего, которое вы все равно будете делать, но в любом фреймворке это уже есть, готовое, покрытое тестами и обкатанное. Если вы ССЗБ - флаг в руки, пилите свое. Однако все же советую не упираться рогом в стену и прочитать про архитектуру современных приложений на пыхе, почитать хотя бы что умеют современные фреймворки. Уверен, 80% ваших задач либо можно покрыть компонентами искаропки, либо немного их допилив, ну или готовыми модулями для фреймворка с гитхаба.
...
let newWin = window.open(cur_url, '_blank');
newWin.close();
...
ой. в App тоже конструктору вас все немного смешалось. Либо конструктор принимает БД, либо отдельный метод, а то так у вас вообще 2 метода делают одно и то же.
загрузка файлов на сервер PHP
отправка письма с вложением PHP
результаты гугления "смешать, но не взбалтывать" (с)