Ubiquity framework

Overview

img

Scrutinizer Code Quality Code Coverage Documentation Status Packagist PHP Version Support Latest Stable Version License Total Downloads Monthly Downloads GitHub commits since latest release (by date) Join the chat at https://gitter.im/ubiquity-framework/community

Ubiquity, a powerful and fast framework for efficient design.

Main features

  • MVC
  • Dependency injection
  • PSR-4 Autoloader
  • Router based on annotations
  • ORM implementing Data Mapper
  • Multi-databases & multi-database types support (PDO Mysql/PostgreSQL/SQLite, Mysqli, Swoole coroutine Mysql, Tarantool, MongoDB)
  • Multi-level cache
  • Rest Server
  • Web admin interface (Webtools)
  • Scaffolding (CRUD, REST, Controllers, views, authentification...)
  • Console Admin interface (Devtools)
  • Assets & themes management (since 2.1.0, on a proposal from @Gildonei)
  • Managed servers: fpm/fastcgi with Apache or nginX, ngx_php, Workerman, Swoole, Roadrunner, PHP-PM with ReactPHP (Dev only)

Upgrade

If Ubiquity devtools are already globally installed, and you want to upgrade to the lastest stable version:

composer global update

For an existing project (in the root folder):

composer update

Project creation

The easiest way to create a project is to use composer create-project command:

Creation of the project firstProject

composer create-project phpmv/ubiquity-project firstProject

This installation adds devtools and webtools to the project.

  • Running the server with vendor/bin/Ubiquity serve
  • webtools available at http://127.0.0.1:8090/Admin

Devtools installation

It is also possible to install devtools globally, to share their use between different projects, and to get more options for a project creation.

  • Install Ubiquity-devtools:
composer global require phpmv/ubiquity-devtools
  • Create a project:
Ubiquity new firstProject -a
  • Start the server:
Ubiquity serve

Need some help?

Ubiquity is a recent project and does not yet have a large community. In the meantime, you can consult:

For further assistance please feel free to :

  • ask your questions directly using gitter
  • create an issue if you notice a bug or a suspicious behavior

Performances

Ubiquity is very fast and performs well.

In the PHP world

The various results of the Techempower benchmarks show this conclusively.

TechEmpower Multiple queries test (*) (see PHP frameworks results)

TechEmpower benchmarks Multiple queries

These excellent results have also been confirmed by an independent benchmark site : phpbenchmarks.com

In the world of web frameworks

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:

TechEmpower 20 updates test (*) (see All frameworks results)

TechEmpower benchmarks Update

(*) Only tests with Framework and ORM are considered.

About design choices

Ubiquity was created in April 2017.

The project tries to simplify the development process, and empowers web developers who delivering value through their applications. It aims to combine performance and ease of handling.

This dual purpose has led to some design choices:

Get 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.

Some PHP frameworks were inspired by the Java world, which has contributed to more professional php development. But 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.

Ubiquity wants to keep the essence of PHP and what it does best, for example:

  • By using php (packed) arrays because they are effective in php (with php7 optimization)
  • By not creating instances of classes to inject for the core part of the framework, to prefer the use of classes with static methods

Overall, Ubiquity wants to keep and use what PHP is good at.

In this perspective, Ubiquity chooses not to respect certain standards: For example, by not creating a Response object implementing an interface (see PSR-7 HTTP message interfaces ) in response to an Http request.

Not multiplying the ways of doing things.

If 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.

Avoiding multiple external dependencies, which are sometimes loaded when they are never used.

  • They prevent the developer from optimizing his own code.
  • In some applications, the dependency loading time is more expensive than running the application code.

The framework used must give the developer the means to optimize his application and not the other way around.

Ubiquity aspires to never become another labyrinthine system.

Preview of some features

Devtools console program

Ubiquity help

The console mode makes it easy to perform all the repetitive tasks related to the design of projects:

  • creations : project, controllers, actions, routes, models, views,
  • checking : routes, models, validators
  • scaffolding (CRUD + authentification)

Scaffolding

Generation of the CRUD elements for a model class with devtools :

Ubiquity crud --resource=Developers --path=/devs/

The generated route /devs/ provides an entry point for CRUD operations:

crud index

Admin interface

Like the console, the administration interface makes it possible to act on the main components of the framework.

When creating a project, it can be installed with the -a option.

ubiquity new firstProject -a

Admin interface

Graphic design

Donations

You can tell us your pleasure in using Ubiquity, giving us a star, and you can do even better by contributing...

Thank you!

Comments
  • [class PDOWrapper ] can not get list of tables from postgresql database

    [class PDOWrapper ] can not get list of tables from postgresql database

    Steps

    just change config for database connection on UbiquityMyadmin and test it. it will connect but when you click models on Myadmin, you will get error.

    [PDOWrapper] gives error on UbiquityMyadmin > models section when you want to use

    PDOWrapper does not have necessary query to get tables from postgresql database like this $query = $this->dbInstance->query ( 'SELECT * FROM pg_catalog.pg_tables WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';' ); // instead of 'SHOW TABLES'

    on line 117

    quick-start\vendor\phpmv\ubiquity\src\Ubiquity\db\providers\pdo\PDOWrapper.php:117

    Expected Result

    show models page.

    Actual Result

    Message : Uncaught PDOException: SQLSTATE[42704]: Undefined object: 7 Error: "tables" unknown configuration parameters in C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity\src\Ubiquity\db\providers\pdo\PDOWrapper.php:117 Stack trace: #0 C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity\src\Ubiquity\db\providers\pdo\PDOWrapper.php(117): PDO->query('SHOW TABLES') #1 C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity\src\Ubiquity\db\traits\DatabaseMetadatas.php(19): Ubiquity\db\providers\pdo\PDOWrapper->getTablesName() #2 C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity-webtools\src\Ubiquity\controllers\admin\traits\CheckTrait.php(179): Ubiquity\db\Database->getTablesName() #3 C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity-webtools\src\Ubiquity\controllers\admin\traits\CheckTrait.php(101): Ubiquity\controllers\admin\UbiquityMyAdminBaseController->getModelsWithoutTable(Array, 'default') #4 C:\PHP_Examples
    File : C:\PHP_Examples\quick-start\vendor\phpmv\ubiquity\src\Ubiquity\db\providers\pdo\PDOWrapper.php Line : 117

    Versions

    · PHP 7.4.1 · Ubiquity devtools (1.2.12) · Ubiquity Webtools (2.3.3) · Ubiquity 2.3.3

    • windows 10
    to test waiting for user action Incomplete feature 
    opened by UlasSAYGINIM 67
  • [ORM] How to build multiple join tables

    [ORM] How to build multiple join tables

    Hi there,

    I am quite new to this framework and have basic question on how to build multiple join queries.

    1. Is it possible to execute custom queries with the DAO?
    2. How can I best replicate this SQL query in ubiquity:
    SELECT items.id, items.type, items.number, items.name, items.creator, items.year, items.files, GROUP_CONCAT(tags.name SEPARATOR ', ') as tags,  GROUP_CONCAT( DISTINCT( items2.name ) SEPARATOR ', ') as projects
    FROM items 
    LEFT  JOIN itemChildren ON itemChildren.itemId = items.id
    LEFT  JOIN items items2 ON items2.id = itemChildren.childId
    LEFT JOIN itemTags ON itemTags.itemId = items.id 
    LEFT JOIN tags ON itemTags.tagId = tags.id
    
    

    Hope someone can help me :) I would really like to understand this framework more as I think it is awesome!

    question 
    opened by danielbarenkamp 45
  • [RFC] Themes layout support

    [RFC] Themes layout support

    Summary

    Theme support

    Motivation

    Reading the docs, I didn't found anything indicating that Ubiquity supports theme layouts, like CakePHP as a sample, Where I can have multiples themes and set the theme to be used on controller and It will render specified view with specific theme.

    Compatibility with Ubiquity's philosophy

    Indicate compatibility or improvements in:

    • ease of use
    • design modularity

    Expected results

    With theme support, we could develop projects and control design versions or create CMSs where users could choose his own theme to apply to his websites

    Additional context

    CakePHP theme support is a good refer to this feature

    accepted new feature Implemented 
    opened by gildonei 35
  • ubiquity Feature

    ubiquity Feature

    ubiquity is very good framework. but not famous because: 1- The name "Ubiquity" is Not Unique and cute name. 2- The document and guide of it is not enough. we need Video in YouTube and more article.

    .

    Contributing 
    opened by rrreza 33
  • [RFC] E-mail module

    [RFC] E-mail module

    Summary

    Module to send authenticated e-mail using SMTP

    Motivation

    Almost all if not all websites or web systems have at least one contact form or a feature that needs to send an e-mail to someone.

    Compatibility with Ubiquity's philosophy

    Indicate compatibility or improvements in:

    • performances
    • ease of use
    • code standartization

    Expected results

    Be possible to configure (maybe in config.php) e-mail accounts (sender name, sender e-mail, smtp, port, host, encryption method, encoding, other info) and use it to send authenticated e-mails, trying to avoid span and server errors.

    Additional context

    Framework could use PHPMailer (https://github.com/PHPMailer/PHPMailer) or have a list of Mailer sender pre-built were developers could choose on framework installation just like they can choose theme and jslib to install on framework

    accepted new feature Contributing to test waiting for user action available in next release 
    opened by gildonei 27
  • [Rest] CORS with localhost Access-Control-Allow-Origin

    [Rest] CORS with localhost Access-Control-Allow-Origin

    Steps

    Consider this Rest Controller: image

    Expected Result

    The expected result is that Access-Control-Allow-Origin allow the website http://localhost:8080 to get,post,... (methods allowed in Access-Control-Allow-Methods).

    Actual Result

    image

    Versions

    • Ubiquity framework 2.3.10
    • Ubiquity devtools 1.2.14
    • php 7.4.6
    • all
    not a bug 
    opened by Lagrida 24
  • [RFC] Maintenance Mode - suggestion

    [RFC] Maintenance Mode - suggestion

    Summary

    I think would be nice if Ubiquity have a native maintenance mode, that could be activated in config through webadmin or devtools, and when in maitenance, it only allows backend access interface, and in front a page with a maintenance message or similar

    Motivation

    All major CMS (WordPress, Joomla, Drupal) have a similar functionality, that allows properly config system without break the front, keeping a maintenance page and maybe an http respose

    Compatibility with Ubiquity's philosophy

    Indicate compatibility or improvements in:

    • ease of use

    Expected results

    Visitors of website developed with Ubiquity will see a maintenance page instead of the site while It is setted to be down.

    accepted new feature Implemented to test 
    opened by gildonei 24
  • [Web Tools]  adding new data button does not work on Model data listing section.

    [Web Tools] adding new data button does not work on Model data listing section.

    Steps

    When model has 6 records, then you refreshed page by clicking models. if you want to add new records by clicking orange button Add New Models... it does not show up form to add new records.

    if you dont refresh model page, like you started adding new records to model which has less than 6 records, but didnt click models section to refresh the page after records number reach or exceed 6, you can continue to adding new records.

    Expected Result

    we should be able to add new records.

    Actual Result

    When you visit models page, and model has 6 records or more. it is like this.

    modelaccount_webtools_problem

    When you visit, model that has no record you can add records as many as you like until you click model section to refresh the page, then you see same thing happening here.

    modelaccount_webtools_problem2

    Versions

    • Ubiquity master-dev
    • Ubiquity web tool master-dev
    • php 7.x
    • OS Win 10
    opened by UlasSAYGINIM 22
  • [RFC] Add Tarantool database support

    [RFC] Add Tarantool database support

    Summary

    Ability to add support for Tarantool database support. Tarantool is a NoSQL database with support of SQL syntaxes.

    Motivation

    Tarantool is both in memory based database as well as in disc memory database. It is also blazing fast and beats Redis in many of the compared benchmarks. The aim of Ubiquity is to be fast and Ubiquity together with support of Tarantool database would be awesome !

    Compatibility with Ubiquity's philosophy

    Indicate compatibility or improvements in:

    • performances
    • ease of use

    Expected results

    Tarantool has a very high RPS and will boost the performance additionally.

    Additional context

    There is a package , https://github.com/tarantool-php/client, which makes it easy to connect to Tarantool and is able to make both NoSQL as well as SQL requests out of the box.

    There is also another php package for Tarantool php-mapper which is awesome and supports object models, like Eloquent models, for Tarantool database which could be awesome to use as well.

    Regards

    new feature Contributing to test performance 
    opened by zilveer 22
  • [RFC] Allow multiple databases

    [RFC] Allow multiple databases

    Summary

    Allow framework to use multiple databases.

    Motivation

    Some projects may need to utilize different database connections on same project, so, Ubiquity should allow to configure a "default" database and extra connections.

    Compatibility with Ubiquity's philosophy

    Indicate compatibility or improvements in:

    • ease of use
    • flexibility

    Expected results

    Be able to connect to different databases

    Additional context

    Models must be able to specify wich database will be use. If none was specified, it uses default database connection

    config.php

    return array(
    	"siteUrl"=>"http://ubiquity.local",
    	"database"=>array(
    		"default" => array(
    			"type"=>"mysql",
    			"dbName"=>"database_name",
    			"serverName"=>"0.0.0.0",
    			"port"=>3306,
    			"user"=>"database_user",
    			"password"=>"database_pswd",
    			"options"=>array(),
    			"cache"=>false
    		),
    		"extra1" => array(
    			....
    		),
    	),
    ...
    
    accepted new feature Implemented 
    opened by gildonei 22
  • Rest Controller with no route

    Rest Controller with no route

    Steps

    I created a Rest controller with a Resource. The path was "/rest/audios". But it is showing error controller rest not found when i navigate to "http://127.0.0.1:8090/rest/audios"

    Expected Result

    Actual Result

    Versions

    • Ubiquity framework 2.4.6
    • Ubiquity devtools 1.3.3
    • php 8.0.10
    • OS - WINDOWS
    not a bug 
    opened by ashokkumar88 19
  • about acl with database

    about acl with database

    Could you please explain a little more the definition of ACL in database, because I want to make an application where you can remove or give permissions to users resources dynamically. For example to a user x give permission to the action update and at a given time remove this ability. This without touching the code, only by a web panel and database.

    secondary, I would also like to know how to make an extension for ubiquity, to convert above described into an ubiquity extension for example called acl-ui.

    really thanks

    question documentation 
    opened by alnux 2
  • theme cant be installed from webtools

    theme cant be installed from webtools

    Im trying to install theme from webtools but this show the next error Im using Ubiquity serve

    Theme installation...
    echo n | Ubiquity install-theme foundation
    sh: Ubiquity: command not found
    

    but with on command line works without problem

    stream@imac-de-stream firstProject % Ubiquity install-theme foundation
    
        · The project folder is /Volumes/ALLEN-FILES/UBIQUITY/PROYECTS/firstProject
         ╭───────────────────────────────────────────╮
         │      ■ Info : Adding theme foundation     │
         │      · Files copy...                      │
         ╰───────────────────────────────────────────╯
    Info from https://repo.packagist.org: #StandWithUkraine
    Using version ^6.7 for zurb/foundation
    ./composer.json has been updated
    Running composer update zurb/foundation
    Loading composer repositories with package information
    Updating dependencies
    Lock file operations: 1 install, 0 updates, 0 removals
      - Locking zurb/foundation (v6.7.5)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Package operations: 1 install, 0 updates, 0 removals
      - Installing zurb/foundation (v6.7.5): Extracting archive
    Generating autoload files
    9 packages you are using are looking for funding.
    Use the `composer fund` command to find out more!
    No security vulnerability advisories found
    Would-you like to define foundation as the active theme ? (y/n)
    n
    
    

    · The project folder is /Volumes/ALLEN-FILES/UBIQUITY/PROYECTS/firstProject

    · PHP 8.1.12
    · Ubiquity devtools (1.4.0)
    · Ubiquity webtools (2.5.0)
    · Ubiquity 2.5.0
    · OS: Darwin imac-de-stream 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64 x86_64
    
    help wanted not a bug 
    opened by alnux 3
  • Nette latte templates compatibility

    Nette latte templates compatibility

    what problems could there be if instead of twig I use the latte template system https://latte.nette.org

    Thanks

    PD. Could implement the support of this template system because it is very good.

    new feature 
    opened by alnux 0
  • webtools Manages composer dependencies does not work

    webtools Manages composer dependencies does not work

    The extensions can not be installed from webtools, everything seems to be fine as shown in the screenshot in this example phpmv/ubiquity-security, but the folder inside the vendor is not created screenshot

    but with terminal composer works without problems

    Versions

    · The project folder is /Volumes/ALLEN-FILES/UBIQUITY/PROYECTS/firstProject
    
    · PHP 8.1.12
    · Ubiquity devtools (1.4.0)
    · Ubiquity webtools (2.5.0)
    · Ubiquity 2.5.0
    · OS: Darwin imac-de-stream 19.6.0 Darwin Kernel Version 19.6.0: Tue Nov 10 00:10:30 PST 2020; root:xnu-6153.141.10~1/RELEASE_X86_64 x86_64
    
    help wanted not a bug 
    opened by alnux 5
  • bug on Admin webtools panel

    bug on Admin webtools panel

    hi i just install ubiquity 2.5.0 and after using "Ubiquity serve" command line i go to the browser when i push webtools link (http://localhost/Admin) it show me a error with foreach() argument. here a screenshot and here a screenshot of the error line im using php 8.1.12.

    regards

    bug version compliance 
    opened by alnux 6
Releases(2.5.1)
  • 2.5.1(Jan 1, 2023)

  • 2.5.0(Dec 18, 2022)

    If devtools are already installed globally, update them:

    composer global update
    

    Added

    • setIsolationLevel for transactions with DAO and Database in Mysql/MariaDb.

    Breaking changes

    • env var support for config files:
      • Cache initialization is required for config
      • loaded config file is located in app/cache/config/config.cache.php after cache initialization

    Fixed

    • Injected attribute parsing in DiControllerParser (pb with name) - no open issue -
    Source code(tar.gz)
    Source code(zip)
  • 2.4.12(Apr 24, 2022)

    Added

    • count method to AbstractRepository
    • app methods to Logger: appLog, appInfo, appError...
    • regenerateId for USession
    • DataFormHelper class for model form generation
    • forward method to UResponse

    Fixed

    • php 8.1 deprecation in Validator, UModel, UArrayModel classes
    • checkConnection in AuthController
    • data-target bug in MultiResourceCrudController
    • UCookie pb with transformers

    removed

    • diSemantic and diBootstrap in Framework => use Ajax\php\ubiquity\JsUtils::diSemantic(...) instead.
    Source code(tar.gz)
    Source code(zip)
  • 2.4.11(Feb 23, 2022)

    Updated (breaking change)

    • AuthControllers refactoring
    • CRUDControllers (return types added on methods to override)

    With an update on an existing project, the following error may occur in derived classes of AuthController, AuthFiles, CRUDController, CRUDFiles:

    Fatal error: Declaration of controllers\auth\files\MyAuthFiles::getViewIndex() must be compatible with Ubiquity\controllers\auth\AuthFiles::getViewIndex(): string

    The signature of the methods of AuthController, AuthFiles, CRUDController, CRUDFiles has changed, by adding the return types:

    It is therefore necessary to add this return types on the overridden methods

    	public function getViewIndex():string {
    		return 'MyAuth/index.html';
    	}
    

    Added

    In Auth controllers:

    • Account recovery (password reset)
    • AuthControllerConfig, UASystem, UConfigFile classes
    Source code(tar.gz)
    Source code(zip)
  • 2.4.10(Feb 13, 2022)

    Added

    In Auth controllers:

    • Two factor authentification
    • Default account creation + email validation

    In Router:

    • Action parameters typing with Router (int, float, bool)

    Fixed

    • RestServer Fix php 8.1 depreciation
    • php 8.1 depreciations in ModelsCacheUpdated, ValidatorMultiple...

    Updated

    • Default index css style
    Source code(tar.gz)
    Source code(zip)
  • 2.4.9(Jan 3, 2022)

    Added

    • image insertion in AssetsManager, img twig function see https://github.com/phpMv/ubiquity/issues/188
    • reverse to Transformers
    • nonce in default template files

    Fixed

    • typo in MultiResourceCrudController (no open issue)
    • php 8.1 depreciation warnings (UbiquityException, UCookie, UResponse...)
    Source code(tar.gz)
    Source code(zip)
  • 2.4.8(Dec 1, 2021)

    Added

    • Pseudo-migrations in webtools and devtools
    Ubiquity info-migrations
    Ubiquity migrations
    
    • Models creation command in devtools
    Ubiquity new-model User
    Ubiquity new-model user,group
    

    Updated

    • Db wrappers for migrations
    • Added DbOperations

    Fixed

    • Fix absolute path pb in router with #/ (no open issue)
    • Fix mainParams pb in router cache generation (no open issue)
    Source code(tar.gz)
    Source code(zip)
  • 2.4.7(Nov 1, 2021)

    Added

    • Domain Driven design approach with DDDManager class
    DDDManager::setDomain('users');
    

    Sample file structure:

    app/
        domains/
            users/
                models/
                controllers/
                views/
                services/
                ...
            posts/
                models/
                controllers/
                views/
                services/
                ...
    
    • Route main parameters
    #[Route('/foo/{mainParam}')]
    public class FooController {
    	public $mainParam;
    }
    
    #[Route('/foo/{_setMainParam()}')]
    public class FooController {
            private $mainParam;
    
    	pubic function _setMainParam(string $p){
    	    $this->mainParam=$p;
         }
    }
    

    Fixed

    • Tests pb (codeception vulnerability)
    • AssetsManager js and css attributes pb (no open issue)
    • default index.html W3C validation errors

    Updated

    • light opt : parseURI and getNS methods
    Source code(tar.gz)
    Source code(zip)
  • 2.4.6(Sep 6, 2021)

    Added

    • [ORM] Update cascade behavior
    • boolean transformer
    • main params for routes
    • MultiResourceCRUDController Crud controller with index for several models
    • [ORM] aggregate uQueries (count, sum, min, max, avg)

    Fixed

    • [DAO] Fix Where pb with count method
    • [DAO] Fix Where pb with exists method

    Updated

    • default index page
    Source code(tar.gz)
    Source code(zip)
  • 2.4.5(Jun 14, 2021)

    Before creating a new project, be sure to update the devtools if they are installed globally:

    composer global update
    

    Added

    • mass update in DAO class (updateAll)
    • type checker for routes params (int, bool=>regex)
    • status code for router (200, 404, 405)

    Fixed

    • autowiring pb with ReflectionType
    • Mysql pb: replace parser cast for Mysql/mariaDB diff
    • ManyToMany update pb (no open issue)

    Updated

    Models generation

    • The regeneration of models preserves the code implemented on the existing models.

    CRUD controllers

    • Add custom default buttons to dataTable (returned by ModelViewer::getDataTableRowButtons())
    • Add onNewInstance($instance) event
    • Add name paramteter in onGenerateFormField($field, $nb, $name) event
    • Add methods for modal title and message (getFormModalTitle($instance) and formHasMessage())
    • Add hook for form modal buttons (onFormModalButtons($btOkay, $btCancel))

    Application root (breaking change)

    • For apache and nginX, root folder is set to public folder

    For an old project (created with a version prior to 2.4.5), you have to modify index.php and move the index.php and .htaccess files to the public folder.

       <?php
       define('DS', DIRECTORY_SEPARATOR);
       //Updated with index.php in public folder
       define('ROOT', __DIR__ . DS . '../app' . DS);
       $config = include_once ROOT . 'config/config.php';
       require_once ROOT . './../vendor/autoload.php';
       require_once ROOT . 'config/services.php';
       \Ubiquity\controllers\Startup::run($config);
    
    Source code(tar.gz)
    Source code(zip)
  • 2.4.4(Apr 25, 2021)

    Added

    • UArrayModels class for array of models manipulation (GroupBy, asKeyValues, sorting...)
    • UModel class for models manipulation (property updating...)
    • ubiquity-debug integration

    Before creating a new project, be sure to update the devtools:

    composer global update
    

    Fixed

    • Boolean types pb #174
    • ResponseFormatter import #173
    • DAO PostgreSQL
      • ConditionParser pb with cast #172
      • Null values on fk #171
    Source code(tar.gz)
    Source code(zip)
  • 2.4.3(Mar 7, 2021)

    Added

    • Dark mode for CRUD controllers (setStyle('inverted'))
    • CRUD hooks
      • onBeforeUpdate(object $instance, bool $isNew)
      • onBeforeUpdateRequest(array &$requestValues, bool $isNew)
    • Twig
      • isAllowedRoute(role, routeName) added if ubiquity-acl is present.

    Updated

    Validators

    • Model validators can be used on the client side (used by default for CRUD controllers).

    Routing

    • Start router cache indexing (for routes with parameters) => This cache indexing is not yet used in production.

    Fixed

    • fix Startup::getTemplateEngineInstance method name.
    • AuthController finalize and initialize pb with bad creditentials(no open issue)
    • Make manyToOne dropdowns clearable in CRUD controllers for fk null values.
    • DI parser pb (no open issue)

    Breaking change possible

    Rest controllers refactoring

    • Removed: SimpleRestController, RestController => Use the RestBaseController or RestResourceController class instead
    • Added:
      • JsonRestController => for simple Json REST API
      • RequestFormatter, JsonRequestFormatter, JsonApiRequestFormatter => for JSON api, JSON or url-encoded requests
    • Updated (for request with authorization - accesstoken):
      • The checkPermissions method in REST controllers must be overridden to check the data associated with an authentication token.
      • checkPermissions must be used in conjunction with the connect method to override as well.
    Source code(tar.gz)
    Source code(zip)
  • 2.4.2(Feb 8, 2021)

    Added

    • ViewRepository CRUD operations + Automatic passing of the handled objects to the view
    • AbstractRepository only CRUD operations for overriding
    • Repository a default repository for any model
    • getAllByIds method in DAO part

    Fixed

    • Fix cache generation pb for field names & dbTypes

    Updated

    • Update route default name (ControllerName-{controller}.action)

    devtools

    • livereload for php embedded web server
    Source code(tar.gz)
    Source code(zip)
  • 2.4.1(Jan 17, 2021)

  • 2.4.0(Dec 31, 2020)

    Added

    • PHP8 attributes support => with PHP8, Ubiquity uses the PHP8 attributes system for annotations (Router, ORM, Validators...).
    • password_verify method to URequest

    Updated

    • CRUD and Auth controllers no longer use twig inheritance on views by default: It is easier to customize the display.
    Source code(tar.gz)
    Source code(zip)
  • 2.3.13(Dec 11, 2020)

  • 2.3.12(Sep 30, 2020)

    Added

    • Named db statements for async platforms
    • Rest events on insert and update BEFORE_INSERT = 'rest.before.insert' and BEFORE_UPDATE = 'rest.before.update'
    • insertGroups method (inserts in an implicit transaction)
    • quote options for PDO wrappers
    • ApplicationStorage for global variables with async platforms (Swoole, Workerman, ngx_php...)

    Fixed

    • [orm] oneToMany and manyToMany loading pb with 2.3.11 version see #145

    Tests

    • Adding tests
    • increase of coverage to 73%.
    Source code(tar.gz)
    Source code(zip)
  • 2.3.11(Jul 27, 2020)

    Added

    • DAOCache (caches objects loaded by id)
    • MemcachedDriver system
    • RedisDriversystem

    Updated

    • fomantic-ui 2.8.6
    • default index view relooking
    • Cache system and ArrayCache refactoring
    • light opt for async view and dbWrapper getStatement

    Fixed

    • [rest] no violations on insert with ValidatorManager see #122
    • [rest] Validation on insertion should be complete see #123
    • [postgresql] pb wth PgsqlDriverMetas (names protection) see #128
    • [postgresql] Insert fail with non autoinc pk see #129
    • [webtools][models] click on Nothing to display generates an error see #130
    • [webtools][models] instances count not updated see #131
    • Session names with non allowed characters see #134
    • SimpleViewAsyncController pb with cache (no open issue)
    Source code(tar.gz)
    Source code(zip)
  • 2.3.10(Jun 26, 2020)

    Added

    • transformer for UCookie (for Crypto)
    • getter on session Csrf protection
    • security level to csrf protection (0 => no secure)

    Updated

    • fomantic-ui 2.8.5
    Source code(tar.gz)
    Source code(zip)
  • 2.3.9(Jun 4, 2020)

  • 2.3.8(May 6, 2020)

    Added

    • Add csrf functions to twig templates

    Updated

    • Update client libraries for new projects (Fomantic 2.8.4, jQuery 3.5.1)
    • Update to Twig 3.0
    Source code(tar.gz)
    Source code(zip)
  • 2.3.7(Apr 30, 2020)

    Added

    • add password_hash to URequest
    • add exists method in DAO
    • Add Csrf protection to session

    Updated

    • AuthController simplification
    • remove unnecessary "No route found log"
    Source code(tar.gz)
    Source code(zip)
  • 2.3.6(Apr 13, 2020)

  • 2.3.5(Apr 8, 2020)

  • 2.3.4(Mar 23, 2020)

    Added

    • updateGroups method for batch updates (mysql bulks)
    • Aditional fields in queries Fixes #83
    • Composer part in webTools

    Updated

    • PostgreSQL PDO Driver created for PostgreSQL Database Support Fixes #98
    • Sqlite PDO Driver created for SQLite Database Support Fixes #90

    Fixed

    • @idcolumn name pb #107
    • [REST] with POST method returns 500 error, and 'controllers/rest' class not found #89
    Source code(tar.gz)
    Source code(zip)
  • 2.3.3(Jan 25, 2020)

    Added

    • mailer module see https://github.com/phpMv/ubiquity-mailer
    • SimpleViewController, SimpleViewAsyncController for php views (without template engine)
    • PHP 7.4 preloading see https://github.com/phpMv/ubiquity/issues/88
    • ObjectCache cache system
    • SDAO class for simple objects loading (popo with public members)
    • Prepared DAO queries for getOne, getById & getAll (async)

    Improved

    • Add warmup methods for controllers & models metas
    • StartupAsync for asynchronous platforms (Swoole, Workerman)
    • unpack replace cufa in Startup::runAction
    Source code(tar.gz)
    Source code(zip)
  • 2.3.2(Oct 28, 2019)

    Added

    • bulk queries in DAO class
      • DAO::toAdd($instance)
      • DAO::toUpdate($instance)
      • DAO::toDelete($instance)
      • DAO::flush()
    • Composer create-project
    composer create-project phpmv/ubiquity-project {projectName}
    

    Changed

    • MicroTemplateEngine optimization (cache)
    Source code(tar.gz)
    Source code(zip)
  • 2.3.1(Sep 25, 2019)

    Added

    • workerman server

    Usage:

    Ubiquity serve -t=workerman -p=8091
    
    • Memcached support
    • multi db types support (Db Wrapper)
      • Tarantool database support on a proposal from @zilveer
      • Swoole coroutine Mysql database support
      • Mysqli database support
      • PDO default wrapper (updated)

    Updated

    • PhpFastCache to ^7.0

    Fixed

    • UQuery multi models fatal error (see #63)
    Source code(tar.gz)
    Source code(zip)
  • 2.3.0(Aug 1, 2019)

    Added

    Changed

    • Startup class optimization

    Breaking change possible

    Induced by multi database functionality:

    • Database startup with DAO::startDatabase($config) in services.php file is useless, no need to start the database, the connection is made automatically at the first request.
    • Use DAO::start() in services.php file when using several databases (with multi db feature)

    For optimization reasons:

    • the classes used only in development (common to devtools and webtools) have been relocated in the phpmv/ubiquity-dev package.

    Migration

    For new projects:

    • Update devtools: composer global update

    For existing projects:

    • composer update in project folder
    • Remove DAO::startDatabase($config) line in services.php

    Fixed

    • route caching pb for routes with variables (no open issue)

    Documentation

    Source code(tar.gz)
    Source code(zip)
  • 2.2.0(Jul 3, 2019)

    Added

    • Web-tools
      • Maintenance mode (see https://github.com/phpMv/ubiquity/issues/49)
      • Updates checking for cache (modifications)
      • Customization (tools)

    Deleted/updated

    • Webtools removed from Ubiquity main repository and are in there own repo

    Use composer require phpmv/ubiquity-webtools to install them.

    Breaking change possible:

    Classes relocation

    • Ubiquity\controllers\admin\utils\CodeUtils->Ubiquity\utils\base\CodeUtils
    • Ubiquity\controllers\admin\interfaces\HasModelViewerInterface->Ubiquity\controllers\crud\interfaces\HasModelViewerInterface
    • Ubiquity\controllers\admin\viewers\ModelViewer->Ubiquity\controllers\crud\viewers\ModelViewer
    • Ubiquity\controllers\admin\popo\CacheFile -> Ubiquity\cache\CacheFile
    • Ubiquity\controllers\admin\popo\ControllerSeo -> Ubiquity\seo\ControllerSeo
    • Ubiquity\controllers\admin\traits\UrlsTrait -> Ubiquity\controllers\crud\traits\UrlsTrait

    Migration

    • Update devtools: composer global update
    • In existing projects: composer require phpmv/ubiquity-webtools for webtools installation.

    Fixed

    • Router: pb with route priority attribute see #54
    Source code(tar.gz)
    Source code(zip)
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

null 14 Aug 14, 2022
PHPR or PHP Array Framework is a framework highly dependent to an array structure.

this is new repository for php-framework Introduction PHPR or PHP Array Framework is a framework highly dependent to an array structure. PHPR Framewor

Agung Zon Blade 2 Feb 12, 2022
I made my own simple php framework inspired from laravel framework.

Simple MVC About Since 2019, I started learning the php programming language and have worked on many projects using the php framework. Laravel is one

Rizky Alamsyah 14 Aug 14, 2022
Framework X – the simple and fast micro framework for building reactive web applications that run anywhere.

Framework X Framework X – the simple and fast micro framework for building reactive web applications that run anywhere. Quickstart Documentation Tests

Christian Lück 620 Jan 7, 2023
Framework X is a simple and fast micro framework based on PHP

Framework X is a simple and fast micro framework based on PHP. I've created a simple CRUD application to understand how it works. I used twig and I created a custom middleware to handle PUT, DELETE methods.

Mahmut Bayri 6 Oct 14, 2022
Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components

Spiral HTTP Application Skeleton Spiral Framework is a High-Performance PHP/Go Full-Stack framework and group of over sixty PSR-compatible components.

Spiral Scout 152 Dec 18, 2022
Sunhill Framework is a simple, fast, and powerful PHP App Development Framework

Sunhill Framework is a simple, fast, and powerful PHP App Development Framework that enables you to develop more modern applications by using MVC (Model - View - Controller) pattern.

Mehmet Selcuk Batal 3 Dec 29, 2022
A PHP framework for web artisans.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

The Laravel Framework 72k Jan 7, 2023
The Symfony PHP framework

Symfony is a PHP framework for web and console applications and a set of reusable PHP components. Symfony is used by thousands of web applications (in

Symfony 27.8k Jan 2, 2023
Open Source PHP Framework (originally from EllisLab)

What is CodeIgniter CodeIgniter is an Application Development Framework - a toolkit - for people who build web sites using PHP. Its goal is to enable

B.C. Institute of Technology 18.2k Dec 29, 2022
Yii 2: The Fast, Secure and Professional PHP Framework

Yii 2 is a modern framework designed to be a solid foundation for your PHP application. It is fast, secure and efficient and works right out of the bo

Yii Software 14k Dec 31, 2022
CakePHP: The Rapid Development Framework for PHP - Official Repository

CakePHP is a rapid development framework for PHP which uses commonly known design patterns like Associative Data Mapping, Front Controller, and MVC. O

CakePHP 8.6k Dec 31, 2022
Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs.

Slim Framework Slim is a PHP micro-framework that helps you quickly write simple yet powerful web applications and APIs. Installation It's recommended

Slim Framework 11.5k Jan 4, 2023
High performance, full-stack PHP framework delivered as a C extension.

Phalcon Framework Phalcon is an open source web framework delivered as a C extension for the PHP language providing high performance and lower resourc

The Phalcon PHP Framework 10.7k Jan 8, 2023
Official Zend Framework repository

Welcome to the Zend Framework 3.0 Release! RELEASE INFORMATION Zend Framework 3.0.1dev This is the first maintenance release for the Zend Framework 3

Zend Framework 5.6k Dec 29, 2022
🚀 PHP Microservice Full Coroutine Framework

PHP microservice coroutine framework 中文说明 Introduction Swoft is a PHP microservices coroutine framework based on the Swoole extension. Like Go, Swoft

Swoft Cloud 5.5k Dec 28, 2022
Open Source PHP Framework (originally from EllisLab)

CodeIgniter 4 Development What is CodeIgniter? CodeIgniter is a PHP full-stack web framework that is light, fast, flexible and secure. More informatio

CodeIgniter 4 web framework 4.5k Jan 2, 2023
FuelPHP v1.x is a simple, flexible, community driven PHP 5.3+ framework, based on the best ideas of other frameworks, with a fresh start! FuelPHP is fully PHP 7 compatible.

FuelPHP Version: 1.8.2 Website Release Documentation Release API browser Development branch Documentation Development branch API browser Support Forum

Fuel 1.5k Dec 28, 2022
Asynchronous & Fault-tolerant PHP Framework for Distributed Applications.

Kraken PHP Framework ~ Release the Kraken! Note: This repository contains the core of the Kraken Framework. If you want to start developing new applic

Kraken 1.1k Dec 27, 2022