Přede mnou se vyskytly otázky typu:
- Jak asi bude vypadat struktura? Bude stejná, nebo se zdrojový kód bude lišit?
- Bude k tomu vyvinut i nějaký grafický developer?
A protože jsem strašně zvědavý člověk a někdy i "hračička", začal jsem se o toto téma více zajímat. Hledal jsem nějaký (alespoň zkušební) kompilátor, developer a vše k této problematice potřebné. Kompilátorů bylo kupodivu více. Pro MS Windows i pro Linux. I když pro Linux bohužel méně. Některé byly free, jiné komerční.
Kompilátory pro MS Windows
Bambalam (BamCompile) |
|
Roadsend |
|
PHC Compiler |
Kompilátory pro Linux
Roadsend |
|
PHC Compiler |
Výše uvedené kompilátory byly ty nejhlavnější a nejzajímavější. Horší to bylo s developery. Těch už tolik nebylo.
Developery
Roadsend |
Windows, Linux |
|
WinBinder |
Windows |
Jako nejjednodušší příklad zde uvedu práci s developerem WinBinder a kompilátorem BamBalam. Obojí je pro MS Windows.
1.
Na disku si vytvoříte adresář, kde bude uložen váš projekt (včetně ikonky).
2.
Ve WinBinderu si vygenerujete GUI aplikace.
Prostředí developeru WinBinder
3.
Vytvoříme si BCP soubor - soubor projektu (BamCompile Project).
; Bamcompile example project file
mainfile app\demo.php
outfile demo.exe
compress
windowed
icon app\hal.ico
embed app
extension app\php_winbinder.dll
BCP soubor "demo.bcp": Projekt s využitím GUI z WinBinderu
Popis je zde asi zbytečný. Každý jistě ví, co znamenají výrazy "icon" nebo "windowed". Důležitá je zde také položka extension. Tím se přidávají knihovny pro aplikaci (knihovny, které do EXE souboru budou zakomponovány). Je však důležité, aby byly pro danou verzi PHP.
; Bamcompile example project file
mainfile app\demo.php
outfile demo.exe
compress
; windowed
icon app\hal.ico
embed app
; extension app\php_winbinder.dll
BCP soubor "demo.bcp": Projekt pro aplikaci typu command line
4.
Naprogramujeme danou aplikaci a do ní zabudujeme GUI (viz ukázkové aplikace v balíčku BamBalam).
5.
Nakonec provedeme kompilaci celého projektu. Syntaxe kompilátoru BamBalam:
Syntaxe: bamcompile.exe BCP soubor
Příklad: bamcompile.exe demo.bcp
Jednoduchá kalkulačka (ukázkový příklad z projektu BamBalam), dodáváno v balíčku.
Závěrem
Zkoušel jsem takto kompilovat, jako command line aplikaci, pokusný program přistupující k MySQL databázi, FTP serveru a vše fungovalo. Nepodařilo se mi zprovoznit "test" pro práci s Oracle databází, přestože volaný "test" přes "php.exe -f ..." fungoval bezchybně. Co se mi však nejvíc líbilo, že zabudované jméno a heslo pro přístup k FTP nebo MySQL nebylo ve výsledném EXE souboru čitelné, a to díky vnitřní kompresi (parametr "compress" v BCP souboru).