@Model
abstract class LoginModel {
// клиент может вызвать этот метод удаленно
@ClientInvoke
public void login(...) {
this.loginFailed(...);//передаст ответ клиенту
}
//а этот метод Сервер вызывает на клиенте
private abstract void loginFailed(...);
}
Дело в том, что методы этого класса передаются на клиент(браузер) и он их может вызывать (не суть, просто метод обозначенный аннотацией - может вызыватся клиентом).. Также есть абстрактные методы(с той же аннотацией), которые сервер может вызывать на клиенте.
Методы разные, названия, сигнатуры - все разное
Например: клиент вызывает метод для входа -
не сильно бы хотелось пилить интерфейс под каждый такой метод (ну или на все такие методы - тоже бы не хотелось)
А так вроде как абстрактный класс и абстрактный метод, а cglib его реализует такой метод динамически...
Хотя ваша идея с хранением интерфейса для совсем публичных методов мне нравится
anonlatte, это проблема только ЭТОГО ГОВНО КОДА
К РЕГУЛЯРКАМ ОТНОШЕНИЯ НЕ ИМЕЕТ var_dump(ereg("^test$", "test\0")); var_dump(preg_match("/^test$/", "test\0"));
0
В любом случае КОД ГОВНО, ereg УСТАРЕЛ давно,удален.. в новых версиях пхп вообще убрали нулевые байты в регулярках.. так что, эта "уязвимость" скорее из прошлого века или че вообще такое
Wentixon, в этом и суть, логика должна быть в сервисе, остальные компоненты должны использовать только апи интерфейса этого сервиса, желательно, чтобы все аргументы в методах на интерфейсе были примитивами
Легче будет сменить реализацию сервиса в случае необходимости