{"id":13654528,"url":"https://github.com/akeeba/fof","last_synced_at":"2025-12-17T05:45:43.381Z","repository":{"id":47308907,"uuid":"9392176","full_name":"akeeba/fof","owner":"akeeba","description":"Rapid Application Development framework for Joomla!™ 3 and 4","archived":false,"fork":false,"pushed_at":"2023-07-21T11:05:46.000Z","size":23842,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"development","last_synced_at":"2024-11-10T06:32:45.357Z","etag":null,"topics":["framework","joomla","rad"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akeeba.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2013-04-12T10:45:11.000Z","updated_at":"2023-06-02T15:36:01.000Z","dependencies_parsed_at":"2024-01-17T02:29:06.064Z","dependency_job_id":null,"html_url":"https://github.com/akeeba/fof","commit_stats":null,"previous_names":[],"tags_count":109,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akeeba%2Ffof","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akeeba%2Ffof/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akeeba%2Ffof/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akeeba%2Ffof/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akeeba","download_url":"https://codeload.github.com/akeeba/fof/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250407724,"owners_count":21425552,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["framework","joomla","rad"],"created_at":"2024-08-02T03:00:36.623Z","updated_at":"2025-12-17T05:45:38.339Z","avatar_url":"https://github.com/akeeba.png","language":"PHP","readme":"# Framework on Framework [![Build Status](https://travis-ci.org/akeeba/fof.png)](https://travis-ci.org/akeeba/fof)\n\nHi! This is the development branch of FOF 4, which was rewritten to provide the minimum required compatibility with Joomla 4, with the express intention of allowing your users to migrate their sites to Joomla 4 and native Joomla 4 versions of your components.\n\n[Documentation](https://github.com/akeeba/fof/wiki)\n\n## DEPRECATED\n\nFOF as a whole has been deprecated and will become End of Life on August 17th, 2023 when Joomla 3 itself becomes End of Life.\n\nWe strongly recommend that you do **NOT** use FOF for any new software development.\n\nIf you are starting a new software project, or want to upgrade an existing project, we recommend that you use the native Joomla MVC which has improved by leaps and bounds starting with Joomla 4.0. Even though there is no official documentation, I have written documentation for Joomla MVC myself. You can find it at https://www.dionysopoulos.me/book.html\n\n## What is FOF? \n\nFOF stands for Framework on Framework. It is a rapid application development (RAD) framework for Joomla!.\n\nUnlike other PHP frameworks you may have used, FOF is not standalone. It is designed to sit on top of the Joomla! API,\nabstracting most of the differences between different Joomla releases so you can write better code, faster, focusing\nonly on what matters: your business logic.\n\nFOF uses the MVC pattern as its fundamental building block, just like Joomla. Unlike Joomla 3, it extends the concept by\nadding one Container per component (for the purists: it's really a Service Locator but let's not split hairs). Moreover,\nit abstracts the main entry point of your component through a Dispatcher. Two further important differences are the\nconcept of automatically generated Events for most public methods in Controllers, Models and Views as well as the\nsupport of Blade templates, in a form that's similar (but not identical) to the Blade template language used by Laravel.\nWhen used right, FOF lets you separate your application into independent, logically organised layers of code which\npromote separation of concerns and maintainability. FOF is not about code purism and doesn't care about it; it's about\nempowering developers to write smaller, more robust code in a smaller amount of time than with traditional Joomla MVC.\n\nFOF has been in continuous development since 2011. Many of the features and concepts it introduced, such as the service\nlocator and the data-driven Model, have already been ported into Joomla 4 itself — at least to an extent. Still, FOF \nitself is a major asset to developers as it offers abstraction of Joomla API changes and features which haven't and \nprobably won't make it into Joomla itself.\n\nAll of the extensions written by Akeeba Ltd make use of FOF. That is to say, as long as we exist as a company you can be\nfairly certain FOF will be maintained and developed further. \n\n## Requirements\n\nFOF 4 requires Joomla 3.9 or later and PHP 7.2 or later. It will not work on older Joomla and PHP versions.\n\nAt a maximum, FOF 4 supports Joomla up to version 4.4 and PHP up to version 8.2. \n\nWe will not support any newer versions of Joomla or PHP.\n\n## FOF 2.x, 3.x, 4.x and Joomla 3\n\nJoomla 3 includes a very, **VERY** old version of FOF we have stopped developing in 2015 and declared End of Life in \n2016. Please don't use that! That's what FOF looked liked a decade or so ago. This repository has a far better, much \nnewer version. And, yes, both versions can run side by side.\n\nThis warrants an explanation of the extensions you see in the Extensions, Manage page with FOF in their name:\n\n* **FOF** (type: Library, version 2.4.3). This is the ancient version of FOF included in Joomla. It's installed in \n  `libraries/fof`. It cannot and MUST NOT be removed. If you delete it your site will break – this is still used by some\n  core Joomla components, including Two Factor Authentication. \n* **F0F** (type: Library). Note that this is F-zero-F. That's an old version of FOF 2.x, renamed so it can run next to\n  Joomla's even more outdated version. [It was a rather complicated affair](https://www.akeeba.com/news/1558-info-about-fof-and-f0f.html).\n  It's installed in `libraries/f0f` (f-zero-f). It should no longer be necessary but please do check first if you have\n  any very old extension still using it.\n* **file_fof30** (type: File). This is the current version of FOF 3. It's installed in  `libraries/fof30`. Do NOT remove\n  it manually. It will be uninstalled automatically when the last extension using it is removed. \n* **FOF** (type: Library, version 3.x.y). This was the old package type of FOF 3. We switched to a file package in 2018\n  to address Joomla bricking your sites if it failed to fully update FOF. While we try to remove the leftover entry from\n  Joomla's Extensions, Manage page it's not always possible. If you see this entry please DO NOT try to remove it, you \n  will break your site.\n* **User - FOF Token Management** (type: Plugin). This will be shipped with our extensions in 2020 to manage token\n  authentication for JSON API calls in Joomla 3. Please do not remove if you're using any Akeeba-branded extension.\n  Also, cool fact: this code has already been contributed to Joomla 4 for its brand new API application, meaning all\n  developers can use it automatically, without having to use FOF for their extensions.\n\n## FOF and Joomla 4\n\nJoomla 4, thankfully, no longer includes the ancient FOF 2.x version Joomla 3 shipped with. You can use the latest \nversion of FOF 4 with Joomla 4.\n\n**Important!** The only reason to migrate a component to FOF 4 is to allow your clients to run the same version of your software on both Joola 3 and 4, allowing them to upgrade their sites. FOF 4 is not considered stable or generally usable on Joomla 4.1 and later versions. You should simultaneously offer a Joomla 4 or later only version of your software written using the core Joomla MVC. That version should be what you will be maintaining in the future.\n","funding_links":[],"categories":["Development"],"sub_categories":["Development Frameworks"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakeeba%2Ffof","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakeeba%2Ffof","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakeeba%2Ffof/lists"}