Я вот Вурдалака только понимаю, что он говорит.Я один вообще перестал понимать, о чем речь? =)
Если я правильно понимаю, то C# даже с помощью рефлексии не позволит это сделать.Плюс погуглил тут специально, в C# библиотеке для моков Moq, чтобы мокать методы реального класса, нужно чтобы они были virtual. В PHP понятное дело такой проблемы нет, у нас все виртуальное. Но там это мешает. Поэтому у меня и образуются такие привычки, переходящие в другие языки.
В C# есть CLR Profiling API, он равноценнен практически рефлекшну в пхп.Если я правильно понимаю, то C# даже с помощью рефлексии не позволит это сделать.
Ну так PHP-шный reflection этого и не позволяет сделать В смысле, снять final. А CLR Profiling API позволяет?В C# есть CLR Profiling API, он равноценнен практически рефлекшну в пхп.
Эм. В дотнете вообще нет final. Но если считать что final это без virtual методов и с const - то да, позволяет.Ну так PHP-шный reflection этого и не позволяет сделать В смысле, снять final. А CLR Profiling API позволяет?
Ну, sealed он там называется.Эм. В дотнете вообще нет final. Но если считать что final это без virtual методов и с const - то да, позволяет.
Я так погуглил, это из разряда runkit/uopz/goaop, если сравнивать с PHP тулзами.Собственно, логично, что язык выполняющийся в виртуальной машине и реверсящийся до комментариев, можно перекрыть как угодно?
Не понял, где тут ломается BC?Почти 100% вероятность BC сломать для всяких мок-библиотек и других тулз поважнее аргумент.
Посмотрел в исходниках - кажется, что-то похожее на то. Но что там дальше внутрях zend_compile_call_common происходит, я, честно говоря, не осилил.Другое дело, что для final или private можно использовать ту же логику, что и при вызове функции, а для всего остального надо знать, что у нас там в this такое, так что теоретически могут быть два разных опкода.