Peachpie: Automatizace kompilace PHP frameworků a jejich rozšíření

Supervisor: Robert Husák
Intended Scope: Software project
Required Skills: C#, PHP

Description:

Jelikož drtivá většina internetu je tvořena dynamickým jazykem PHP, vzniká spousta nástrojů pro údržbu a optimalizaci aplikací na PHP postavených. Nejnovější přírůstek na půdě MFF UK je kompilátor Peachpie, který je postavený na kompilátoru Microsoft Roslyn. Peachpie kompiluje PHP do mezikódu CIL, který lze spustit na platformě Microsoft .NET, .NET Core a Mono. Díky kompilaci získáme rychlejší a bezpečnější kód, který lze navíc snadno integrovat s dalšími jazyky splňujícími specifikaci CLI (C#, F#, Visual Basic atd.).

Frameworky psané v PHP (WordPress, MediaWiki, Symfony, ...) se vyznačují velkým množstvím různých rozšíření, jejichž instalace probíhá nakopírováním zdrojových kódů a dalších souborů do vybraných složek. Aby dané rozšíření fungovalo korektně i při použití Peachpie, je potřeba celý web po jeho instalaci zkompilovat znovu.

Naším cílem je upravit tento mechanismus tak, aby se jádro i jednotlivá rozšíření daných systémů kompilovala zvlášť do veřejně dostupných balíčků. Uživatel pak následně nainstaluje dané rozšíření tak, jak je zvyklý z příslušného frameworku. Tento proces se nám již úspěšně podařilo aplikovat na WordPress, který jsme včetně několika nejdůležitějších rozšíření zkompilovali do balíčků NuGet. Jejich repozitář pak slouží jako zdroj informací o dostupných rozšířeních a jejich verzích, takže celý proces je pro uživatele naprosto transparentní.

V rámci řešení bude potřeba:

  • Analyzovat nejvýznamnější PHP frameworky, jejich rozšíření a způsoby, jakými probíhá jejich distribuce
  • Navrhnout postupy pro práci s jejich verzováním, kompilací, publikací balíčků a instalací
  • Výsledné postupy pro dané frameworky a vybraná rozšíření naimplementovat
  • Vše pečlivě zdokumentovat

Očekává se, že výsledné balíčky budou uložené v NuGet repozitářích, jádro implementace bude tedy spočívat v integraci tohoto systému distribuce do jednotlivých frameworků. Kromě toho bude potřeba i popsat, jak navržené postupy vhodně zapojit do continuous integration (CI).

Další témata související s Peachpie:

The content is available under Creative Commons BY-NC 3.0 License