Позвонить PHP статический метод из JavaScript без посредника PHP-скрипт

136
22

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

<?php

class TestClass
{
static function myStaticFunction()
{
return "The uninstantiated return value";
}
}

echo TestClass::myStaticFunction();
// echos "The uninstantiated return value"

Легко использовать Javascript ajax-вызов для PHP-скрипта, который создает экземпляр класса PHP и запускает метод класса.

Мой вопрос: можно ли вызвать метод статического класса PHP из Javascript с помощью ajax, тем самым устраняя необходимость в промежуточном PHP-скрипте или создании экземпляра класса, не нарушая при этом хорошую практику PHP классов, находящихся в отдельных файлах для себя.

Я попытался поставить вызов статического метода PHP в конструкторе класса и получил сообщение об ошибке. Включение всех функций в конструктор также приведет к поражению полезности класса для других целей.

Если это возможно, пожалуйста, покажите, как можно было бы вызвать статический метод класса PHP с использованием ajax без использования промежуточного скрипта. Если это было ответино, прежде чем указывать ссылку на ответ, прежде чем закрывать этот вопрос, так как я не нашел ответа прямо на точку.

Если это невозможно, почему PHP может вызывать метод статического класса без создания экземпляра, но Javascript не может сделать то же самое через ajax?

спросил(а) 2021-01-19T14:37:44+03:00 6 месяцев назад
1
Решение
77

См. Запрос AJAX и функции класса PHP для аналогичного, но не идентичного вопроса с несколькими ответами.

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

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

https://stackoverflow.com/users/1006348/rajesh видел проблему лучше всего в другой публикации.

https://stackoverflow.com/users/1311025/tomas-prado предложил лучший ответ, но уклонился от значения ответа в другом сообщении. Он предложил один промежуточный скрипт, который может обрабатывать любой вызов ajax, который требует только создания экземпляра одного класса и одного класса с включенными данными. Я не пробовал, но думаю, что это сработает. Нет необходимости в 50 промежуточных сценариях. Каждый вызов ajax вызывает тот же PHP-скрипт PHP. Данные назовут класс и метод и предоставят оставшиеся необходимые данные. Универсальный промежуточный скрипт будет анализировать класс и метод и отправлять туда пакет данных. Метод класса будет предназначен для игнорирования первых двух полей данных, поскольку они предназначены только для информации маршрутизации.

Спасибо за все ответы. Если у кого-то есть лучший ответ, сообщите нам об этом.

jimfuqua

ответил(а) 2021-01-19T14:37:44+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема