{"id":13404923,"url":"https://github.com/phpMv/ubiquity","last_synced_at":"2025-03-14T09:32:06.995Z","repository":{"id":45290913,"uuid":"62182584","full_name":"phpMv/ubiquity","owner":"phpMv","description":"Ubiquity framework","archived":false,"fork":false,"pushed_at":"2024-09-16T22:57:23.000Z","size":25886,"stargazers_count":689,"open_issues_count":13,"forks_count":60,"subscribers_count":24,"default_branch":"master","last_synced_at":"2024-09-17T03:39:55.652Z","etag":null,"topics":["framework","mvc","orm","performance","php","ubiquity"],"latest_commit_sha":null,"homepage":"https://ubiquity.kobject.net","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phpMv.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/acl.rst","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-06-29T00:20:49.000Z","updated_at":"2024-09-16T22:57:27.000Z","dependencies_parsed_at":"2024-06-18T12:42:30.795Z","dependency_job_id":"6ecbbdbb-70e4-4afb-9fb4-c0e05872a449","html_url":"https://github.com/phpMv/ubiquity","commit_stats":{"total_commits":3337,"total_committers":17,"mean_commits":196.2941176470588,"dds":0.04135451003895718,"last_synced_commit":"5a9d73f077edeba508184c1401995434756b12fa"},"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpMv%2Fubiquity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpMv%2Fubiquity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpMv%2Fubiquity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phpMv%2Fubiquity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phpMv","download_url":"https://codeload.github.com/phpMv/ubiquity/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221454062,"owners_count":16824596,"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","mvc","orm","performance","php","ubiquity"],"created_at":"2024-07-30T19:01:53.278Z","updated_at":"2024-10-25T19:31:23.816Z","avatar_url":"https://github.com/phpMv.png","language":"PHP","readme":"![img](https://github.com/phpMv/ubiquity/blob/master/Banner/banner-duck.png?raw=true)\n\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpMv/ubiquity/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpMv/ubiquity/?branch=master) [![Code Coverage](https://scrutinizer-ci.com/g/phpMv/ubiquity/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/phpMv/ubiquity/?branch=master) [![Documentation Status](https://readthedocs.org/projects/micro-framework/badge/?version=latest)](http://micro-framework.readthedocs.io/en/latest/?badge=latest)\n![Packagist PHP Version Support](https://img.shields.io/packagist/php-v/phpmv/ubiquity) \n[![Latest Stable Version](https://poser.pugx.org/phpmv/ubiquity/v/stable)](https://packagist.org/packages/phpmv/ubiquity)\n[![License](https://poser.pugx.org/phpmv/ubiquity/license)](https://packagist.org/packages/phpmv/ubiquity)\n[![Total Downloads](https://poser.pugx.org/phpmv/ubiquity/downloads)](https://packagist.org/packages/phpmv/ubiquity)\n[![Monthly Downloads](https://poser.pugx.org/phpmv/ubiquity/d/monthly)](//packagist.org/packages/phpmv/ubiquity)\n![GitHub commits since latest release (by date)](https://img.shields.io/github/commits-since/phpmv/ubiquity/2.5.0?style=flat-square)\n[![Join the chat at https://gitter.im/ubiquity-framework/community](https://badges.gitter.im/ubiquity-framework/community.svg)](https://gitter.im/ubiquity-framework/community?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge) \n\n[Ubiquity](https://ubiquity.kobject.net), a powerful and fast framework for efficient design.\n\n# Main features\n  - MVC or Domain Driven Design with MVC\n  - Dependency injection\n  - PSR-4 Autoloader\n  - Router based on annotations/attributes\n  - ORM implementing Data Mapper\n  - Multi-databases \u0026 multi-database types support (PDO Mysql/PostgreSQL/SQLite, Mysqli, Swoole coroutine Mysql, Tarantool, MongoDB)\n  - Multi-level cache\n  - Rest Server\n  - Web admin interface (Webtools)\n  - Scaffolding (CRUD, REST, Controllers, views, authentification...)\n  - Console Admin interface (Devtools)\n  - Assets \u0026 themes management (since 2.1.0, on a [proposal](https://github.com/phpMv/ubiquity/issues/11) from [@Gildonei](https://github.com/gildonei))\n  - Managed servers: fpm/fastcgi with Apache or nginX, [ngx_php](https://github.com/rryqszq4/ngx_php7), [Workerman](https://github.com/walkor/Workerman), [Swoole](https://github.com/swoole/swoole-src), [Roadrunner](https://github.com/Lapinskas/roadrunner-ubiquity), [PHP-PM](https://github.com/php-pm/php-pm) with ReactPHP (Dev only)\n  - Multi template engines support: [Twig](https://twig.symfony.com/)(default), [Latte](https://latte.nette.org/en/) and [Plates](https://platesphp.com/) since 2.5.2\n\n# Upgrade\nIf Ubiquity devtools are already globally installed, and you want to upgrade to the lastest stable version:\n```bash\ncomposer global update\n```\nFor an existing project (in the root folder):\n```bash\ncomposer update\n```\n\n# Project creation\n\nThe easiest way to create a project is to use composer **create-project** command:\n\nCreation of the project **firstProject**\n```bash\ncomposer create-project phpmv/ubiquity-project firstProject\n```\nThis installation adds [devtools](https://github.com/phpMv/ubiquity-devtools) and [webtools](https://github.com/phpMv/ubiquity-webtools) to the project.\n\n- Running the server with `vendor/bin/Ubiquity serve`\n- **webtools** available at `http://127.0.0.1:8090/Admin`\n\n## Devtools installation\nIt is also possible to install [devtools](https://github.com/phpMv/ubiquity-devtools) globally, to share their use between different projects, and to get more options for a project creation.\n\n* Install Ubiquity-devtools:\n```bash\ncomposer global require phpmv/ubiquity-devtools\n```\n* Create a project:\n```bash\nUbiquity new firstProject -a\n```\n* Start the server:\n```bash\nUbiquity serve\n```\n# Need some help?\nUbiquity is a recent project and does not yet have a large community.\nIn the meantime, you can consult:\n - [Quick-start guide with devtools](https://micro-framework.readthedocs.io/en/latest/quickstart/quickstart.html) to discover the framework with the cli program\n - [Quick-start guide with webtools](https://micro-framework.readthedocs.io/en/latest/quickstart/quickstart-html.html) to discover the framework with the webtools interface\n - [Documentation](https://micro-framework.readthedocs.io/en/latest/) to go deeper\n - [API documentation](http://api.kobject.net/ubiquity/) to search further\n\nFor further assistance please feel free to : \n - ask your questions directly using [gitter](https://gitter.im/ubiquity-framework/community)\n - create an [issue](https://github.com/phpMv/ubiquity/issues/new?assignees=jcheron\u0026labels=\u0026template=bug_report.md\u0026title=%5Bpart%5D+Element+should+do+X) if you notice a bug or a suspicious behavior\n\n# Performances\nUbiquity is very fast and performs well.\n### In the PHP world\nThe various results of the [Techempower benchmarks](https://www.techempower.com/benchmarks) show this conclusively.\n\n#### TechEmpower Multiple queries test (*) (see [PHP frameworks results](https://www.techempower.com/benchmarks/#section=test\u0026runid=d6f9832a-d586-478c-84a0-8a89cccfcc2a\u0026hw=ph\u0026test=query\u0026l=yyku7z-e7\u0026c=c\u0026a=2\u0026o=c))\n![image](https://user-images.githubusercontent.com/2511052/139775147-9fef3a88-bbbf-4b68-84da-621e2af585cb.png)\n\nThese excellent results have also been confirmed by an independent benchmark site : [phpbenchmarks.com](http://www.phpbenchmarks.com/en/comparator/framework)\n\n### In the world of web frameworks\n**Ubiquity** is optimized for use with asynchronous platforms (**Workerman** and **Swoole**). It takes advantage of the recent PHP evolutions (opCache management and preloading). In this context, it performs against the fastest Frameworks written in C, C++, Rust or java:\n\n#### TechEmpower 20 updates test (*) (see [All frameworks results](https://www.techempower.com/benchmarks/#section=test\u0026runid=d6f9832a-d586-478c-84a0-8a89cccfcc2a\u0026hw=ph\u0026test=update\u0026c=e\u0026a=2\u0026o=e))\n![image](https://user-images.githubusercontent.com/2511052/139774720-9ab95f85-c8d4-4ba7-991d-cd8206bf6b38.png)\n\n(*) Only tests with Framework and ORM are considered.\n# About design choices\nUbiquity was created in April 2017.\n\nThe project tries to simplify the development process, and empowers web developers who delivering value through their applications.\nIt aims to combine performance and ease of handling.\n\nThis dual purpose has led to some design choices:\n\n\u003eGet inspired by the best practices and successful concepts from other frameworks, but do not try to reproduce things that are not a part of the logic of PHP.\n\nSome PHP frameworks were inspired by the Java world, which has contributed to more professional php development.\nBut java is not PHP : the environments and languages are completely different (though their syntax is similar). What is good in Java is not necessarily in PHP.\n\nUbiquity wants to keep the essence of PHP and what it does best, for example:\n  - By using php (packed) arrays because they are effective in php (with php7 optimization)\n  - By not creating instances of classes to inject for the core part of the framework, to prefer the use of classes with static methods\n\nOverall, Ubiquity wants to keep and use what PHP is good at.\n\nIn this perspective, Ubiquity chooses not to respect certain standards:\nFor example, by not creating a Response object implementing an interface (see [PSR-7 HTTP message interfaces](https://www.php-fig.org/psr/psr-7/) ) in response to an Http request.\n\n\u003eNot multiplying the ways of doing things.\n\nIf a method or technique is optimal, there's no reason to implement an alternative version, especially if there is a risk of degrading the performance or complicating the handling of the framework.\n\n\u003eAvoiding multiple external dependencies, which are sometimes loaded when they are never used.\n- They prevent the developer from optimizing his own code.\n- In some applications, the dependency loading time is more expensive than running the application code.\n\nThe framework used must give the developer the means to optimize his application and not the other way around.\n\nUbiquity aspires to never become another labyrinthine system.\n\n# Preview of some features\n## Devtools console program\n```bash\nUbiquity help\n```\nThe console mode makes it easy to perform all the repetitive tasks related to the design of projects:\n- creations : project, controllers, actions, routes, models, views, \n- checking : routes, models, validators\n- scaffolding (CRUD + authentification)\n\n## Scaffolding\n\nGeneration of the CRUD elements for a model class with devtools :\n\n```bash\nUbiquity crud --resource=Developers --path=/devs/\n```\n\nThe generated route **/devs/** provides an entry point for CRUD operations:\n\n![crud index](https://static.kobject.net/ubiquity/images/github/crud-index.png \"crud index\")\n\n## Admin interface\nLike the console, the administration interface makes it possible to act on the main components of the framework.\n\nWhen creating a project, it can be installed with the **-a** option.\n```bash\nubiquity new firstProject -a\n```\n![Admin interface](https://github.com/phpmv/ubiquity-webtools/blob/master/.github/images/webtools-interface.png \"Admin interface\")\n\n# Graphic design\n- Ubiquity logos and banner: [@richardbmx](https://github.com/richardbmx)\n\n# Donations\nYou can tell us your pleasure in using Ubiquity, giving us a star,\nand you can do even better by [contributing](https://github.com/phpMv/ubiquity/blob/master/CONTRIBUTING.md)...\n\nThank you!\n\n","funding_links":[],"categories":["PHP","Frameworks"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FphpMv%2Fubiquity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FphpMv%2Fubiquity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FphpMv%2Fubiquity/lists"}