Превращаем PHP класс в JS объект
Если бы каждый раз, когда я слышу вопрос "как из JS вызвать функцию PHP" от очередного начинающего быдлокодера, делающего свою супер-пупер браузерную игру или чат, мне давали один доллар, то я бы давно скопил на хорошую FullHD плазменную панель. Объединить необъеденяемое - кристальная мечта мальчиков, которые с горем пополам выучили php, а на JS просто не хватает умственных ресурсов, поэтому эти лентяи посылались нахуй с формулировкой "не еби себе и другим мозг". Но вот ведь чудеса, сам столкнулся в процессе одной шабашки с подобной задачей: для валидации формы существовал класс ровно на 25-ть методов, которые проверяли всякую мишуру, вроде наличия денег на счету клиента, правильность введеных данных и так далее. Проблема состояла в том, что к проверке нужно было добавить client-side на основе JS. Переписывать все было очень трудоемким процессом, да и не представлялось возможным - процесс не ограничивалась регулярками для мыла и количества циферок в номере кредитки. Именно поэтому я написал маленький класс, который превращает PHP в JS объект. Все очень просто: получаем public методы класса или ограничиваемся списком из массива, который передаем вторым параметром при инициализации после имени или инстанса необходимого нам класса, создаем JS объект с префиксом jsphp_ и соответствующими методами, каждый из которых создает ajax запрос к backend, который в свою очередь обрабатывает запрос (вызывает соответствующий метод PHP объекта) и возвращает результат. Кому интересно, то можно добавить еще и экспорт глобальных переменных, аналог __construct, хранить созданный php объект в сессионной глобальной переменной, лично мне и так хватает.Пример работы можно посмотреть по
ссылке, исходный код доступен в
копипастере, javascript немного обфусцируется для примитивной защиты от дебилов. Для ajax запроса используется
jquery.