{"id":14972122,"url":"https://github.com/rcarvello/webmvcframework","last_synced_at":"2025-10-26T17:31:37.016Z","repository":{"id":153826698,"uuid":"65494645","full_name":"rcarvello/webmvcframework","owner":"rcarvello","description":"PHP MVC framework for bulding web applications","archived":false,"fork":false,"pushed_at":"2024-05-24T15:47:11.000Z","size":8687,"stargazers_count":52,"open_issues_count":0,"forks_count":16,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-01-31T21:52:59.691Z","etag":null,"topics":["aspects","code-generation","decomposition","mvc","mysql-database","php-framework","php-mvc-framework","web-mvc"],"latest_commit_sha":null,"homepage":"http://www.webmvcframework.com","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rcarvello.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license.txt","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,"publiccode":null,"codemeta":null}},"created_at":"2016-08-11T19:07:00.000Z","updated_at":"2024-12-16T17:17:50.000Z","dependencies_parsed_at":"2024-05-19T17:35:41.961Z","dependency_job_id":null,"html_url":"https://github.com/rcarvello/webmvcframework","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarvello%2Fwebmvcframework","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarvello%2Fwebmvcframework/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarvello%2Fwebmvcframework/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarvello%2Fwebmvcframework/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcarvello","download_url":"https://codeload.github.com/rcarvello/webmvcframework/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238375243,"owners_count":19461570,"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":["aspects","code-generation","decomposition","mvc","mysql-database","php-framework","php-mvc-framework","web-mvc"],"created_at":"2024-09-24T13:46:25.200Z","updated_at":"2025-10-26T17:31:37.010Z","avatar_url":"https://github.com/rcarvello.png","language":"PHP","readme":"![alt tag](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/webmvclogo.png)\n\u003csup\u003eSupported PHP versions from 5.3 to 8.3\u003c/sup\u003e\n\u003e[![trophy](https://github-profile-trophy.vercel.app/?username=rcarvello)](https://github.com/ryo-ma/github-profile-trophy)\n\u003e\n\u003e \n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=rcarvello_webmvcframework\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=rcarvello_webmvcframework)\n[![Vulnerabilities](https://sonarcloud.io/api/project_badges/measure?project=rcarvello_webmvcframework\u0026metric=vulnerabilities)](https://sonarcloud.io/summary/new_code?id=rcarvello_webmvcframework)\n[![Bugs](https://sonarcloud.io/api/project_badges/measure?project=rcarvello_webmvcframework\u0026metric=bugs)](https://sonarcloud.io/summary/new_code?id=rcarvello_webmvcframework)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=rcarvello_webmvcframework\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=rcarvello_webmvcframework)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=rcarvello_webmvcframework\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=rcarvello_webmvcframework)\n\n# PHP WEB MVC Framework \nThe package **webmvcframework**, with the acronym of **WebMVC**, is an **object oriented** PHP framework designed using **MVC architectural  pattern** for building web-based MySQL applications.\n\nIt is an open-source web framework that is business-oriented and purposely written for programmer happiness and sustainable productivity. It lets you write beautiful code by favoring the Convention over the Configuration paradigm. The result is a web framework that allows you to transition from idea to implementation quickly.\n\nIt offers to developers a complete set of functionalities for rapid development of data-intensive web applications. Generally, it provides services for system decomposition that developers can do at different levels when they coding a complex web application. Firstly it provides the classes to achieve the Model, View, Controller decomposition and also to divide PHP code from HTML during the GUI designing. However, this is not the only feature provided by the Framework for acting on the application's decomposition.\n\nThe **Component Based Development**, which was used for building many framework’s features, permits to developers to apply another level of software decomposition and reuse. Framework’s components, in fact, realize **recurrent aspects** of web applications. Many of these aspects are regarding MySQL, e.g. data listing, data listing and sorting, data listing and filtering, data listing and pagination, record management and the common table’s operations of select, insert, delete and update. \n\n\u003e WebMVC offers a set of pre-built components for implementing the necessary server logic for frequently database management operations. Each component is itself designed with an MVC architecture and is equipped by a Controller, Model, View, and HTML Template.\n\u003e Components are easy to use and developers can aggregate them into a root controller by using composition criteria when building complex web pages.\n\u003e The component GUI can also easily updated or replaced to reflect the graphics experience, simply by editing or replacing the component HTML template. The component internal logic will remain fully reusable without the need for any source code modifications.\n\n## Thanks\nMany and many thanks to   \n\n![https://www.jetbrains.com](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/jetbrains.png)  \nfor granting me an open source license of magic   \n   \n![https://www.jetbrains.com/phpstorm/](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/phpstorm.png)   **PHPStorm**       \n    \nthat I used in the development of PHP Web MVC Framework.   \n\n## How to install and run\nTo install the framework download and copy it into an Apache web folder. Then go to the **config directory** and modify **application.config.php** according to your MySQL server configuration and Apache web folder you want to use for your application.\nBy default framework provides a small set  of examples. For using them run the provided SQL script into the **sql** folder.\nIn a future time, I will provide you with more examples illustrating its functionalities.\n\n## Setup Using composer\n\nTo create a new PHP Web MVC project in a given project folder, open a terminal session and run:\n\n```\ncomposer create-project rcarvello/webmvcframework PROJECT-FOLDER\n```\n\nThen go into PROJECT-FOLDER:\n\n```\ncd  PROJECT-FOLDER\n```\n\nConfigure DB access:\n\n```\nphp setup-config.php\n```\n\nYou will be prompted to specify certain configuration variables, such as the database host, username, password, etc.\n\nFinally, you can run the development server simply by typing:\n\n```\ncomposer run dev\n```\n\nThe development server will be started by enabling hot reload on any code changes.\n\nYour web browser will open the demo page at **http://localhost:3000**\n\n## How to autogenerate PHP Model classes from your MySQL database\nThe util directory contains a file named **app_create_beans.php**.\nRun it from your browser or from the command line to execute the ORM classes code auto-generation regarding tables of a given MySQL database.\n\nWarning!\nBefore running it you must configure MySQL access parameters by modifying **util\\mysqlreflection\\mysqlreflection.config.php** according to your MySQL configuration.\nAfter running the utility you will find the autogenerated PHP classes into the **models\\beans directory**.\n\n## Documentation\n\n###  WebMVC official wiki\nYou can start reading the wiki from [here](https://github.com/rcarvello/webmvcframework/wiki)\n\n### Other information\nYou can dowload some PDFs, PPTs, and diagrams from [here](https://github.com/rcarvello/webmvcframework/tree/master/docs)\n\n### Video Tutorial\nAn introduction to PHP WebMVC Framework   \n\n[![IMAGE Video Tutorial](https://i.ytimg.com/vi/7zJFXLd4rk8/hqdefault.jpg?custom=true\u0026w=196\u0026h=220\u0026stc=true\u0026jpg444=true\u0026jpgq=90\u0026sp=67\u0026sigh=5Dym90YTR05kyX82Kg8gW9VseUk)](https://www.youtube.com/watch?v=7zJFXLd4rk8\u0026t=37s)\n\n## Diagrams\n\n### Main classes\n![alt tag](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/framework.png)\n\n### Handling HTTP requests - Loading and dispatching controllers\n![alt tag](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/Dispatch%20and%20Create%20MVC%20Instance.png)\n\n\n![alt tag](https://raw.githubusercontent.com/rcarvello/webmvcframework/master/docs/wiki_resource/WebMVCRequestHandling.png)\n\nThe flow description is the following;\n1. An incoming HTTP request is delivered to the Web MVC Dispatcher \n2. The Dispatcher automatically recognizes in the HTTP request a call for a Controller execution. Then it uses the Loader to load the appropriate Controller class.\n3. The Loader imports Controller class and all its dependencies\n4. The Dispatcher is now enabled to instantiate the appropriate Controller\n   * 4b...z Its also possible that the Controller aggregates and manages the execution of one or more controllers. This is a feature of WebMVC known as \"Hierarchical MVC\". We will discuss it later,  in this [section](https://github.com/rcarvello/webmvcframework/wiki/Content-based-decomposition)\n5. The Controller uses and runs the Model\n   * 5b Model connects to MySQL to retrieve or store data\n6. The Controller uses and runs the View\n   * 6b The View reads the static design of the web page from an HTML Template. The static design of the Template will be used by the View for generating the dynamic web page also by using data provided by the Model.\n7. The Controller, after loading and processing the Model and View, is enabled to provide back to the Dispatcher the output that was dynamically produced.\n8. Finally, the Dispatcher sends back the output as an HTTP response\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcarvello%2Fwebmvcframework","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcarvello%2Fwebmvcframework","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcarvello%2Fwebmvcframework/lists"}