Bcompiler был создан по следующим причинам:
Для того, чтобы обеспечить возможность создания платных
приложений с использованием PHP |
Для создания приложений на основе php-gtk, которые могли
бы обходиться без интерпретатора (php.exe) |
Для того, чтобы изучить возможность создания конвертора из PHP в C |
Первая из этих проблем решается с помощью функций
bcompiler_write_header(),
bcompiler_write_class(),
bcompiler_write_footer(),
bcompiler_read() и
bcompiler_load().
Файлы с байткодом могут быть сохранены в сжатом и обычном виде. Использование
BZip2 позволяет уменьшить размер файла до одной трети. Сжатые таким образом
файлы могут быть прочитаны с помощью функции
bcompiler_load().
Для того, чтобы создать исполняемые (EXE) файлы, bcompiler должен использоваться
с файлом, который использует PHP как динамическую библиотеку или с PHP с
модифицированным SAPI. В этом случае, bcompiler ищет сжатые данные байт-кода в
конце EXE-файла.
bcompiler особо не увеличивает скорость выполнения приложений, так как он
всего лишь пропускает стадию комплирования PHP-кода в байткод и заменяет ее
импортированием байткода из файла с помощью своих средств. Кроме того, он не
выполняет никаких действий по оптимизации байткода, эта функциональность
может быть добавлена в будущем.
Говоря о защите исходного кода, можно сказать, что восстановить исходный код
из байткода, который получен в результате работы bcompiler, невозможно.
Поэтому попытки восстановить байткод до состояния исходников бессмысленны.
Тем не менее, данные из байткода получить вполне возможно, поэтому не храните
в переменных своих паролей и другой ценной информации.