020 555 1111
  • Old fashion, modular, procedural PHP plus some scaffolding techniques to allow it to mimic MVC simplicity.
  • A quick reference to help you find in PHP maze what needs to be done and how to do it.
  • Learn a PHP Object Oriented Programming by building a live discussion forum application.
  • MVC - Model View Controller - real life, easy reference and application.

FMVC (or JMVC) - A fully modular, based on fractal design framework - Documentation

 

Long, long time ago, in another galaxy ... ;)

 

main demo movie 
shows sample, full deployment procedure - time: 14 m 42 s
for more detailed (shorter) phase movies - scroll down

Long, long time ago I wanted to understand MVC and had this idea to automate deployment and 'black-box' modules via own resources and ... well I was younger, so ideas were 'dime a dozen' ;)). Anyway, I came up with this framework.

Here is the code.

easy access to cheap employees due to almost flat learning curve

if they know OOP PHP /MySQL /jQuery, they are pretty much qalified and almost outright 100% productive - that translates to
  • easier access to comparatively inexpensive employees capable of delivering high quality code
  • capacity to use rent-a-coder to save money, yet maintaining high coding standards
    you can use external coder, since they are supposed to deliver self-contained unit, so they will not have to work with (and possibly damage) anything vital, as they can use e.g. IonCube encoded developer version of FMVC to get their assignment done

perfect for large projects (vortals = vertical portals)

easy to extend, change, upgrade any existing, FMVC based project

  • since all modules are self-contained, all it takes to change is to detach module and replace it with better, more advanced version
  • another way would be to add additional functional modules to module cluster (a group performing certain task)
  • additionally, this presents unique oportunity to keep on selling to existing customers, since upgrades may be economically priced and easily demonstrated - demo can be set in minutes using interface, or even faster (one-click) using pre-made scenario script.

low abstraction framework

  • PHP OOP coded (on 5.3.10) using simple, cross-version code, so FMVC core engine can work quite easily with all PHP5 versions, it can also utilise technology delivered with PHP 5.4
    any custom coded module can use any technology available with newest versions of PHP, since it is self-contained (of course much depends on coder/designer of such module and the way they follow guidelines, which are very simple and lean)
  • future proof - due to low abstraction, no need for maintenance of abstraction layer, when PHP/MySQL moves forward
  • PDO based DB - thus:
    • no need for any high abstraction ORM DB cap software
    • capacity to use other than MySQL databases as well

 

FMVC functionality, tools and options offered by current core engine version.
extension inhibiting design of core engine guarantees its growth via further coding

fractal, modular design

Each module, regardless of position and importance, shares same, repeating, full MVC structure, which is fully serviced by FMVC delivery engine, so coder does not have to worry about loading and instantiating of used classes.
Plus it can have (it is even suggested) a full toolset (libs, resources etc.) it requires to do its job.
Such setup allows full self-containment, which leads to real plug(unplug)’n’play versatility without cripling system.
All ‘non-unpluggable’ modules can be protected by “boot_tree” and “boot_lock” mechanisms;
 

structural loose coupling

Powered by location slot pull-in engine.
An easy way to pull in self-contained, task oriented modules anywhere you want in your project interface without hard-coding.
It can be equipped and done via script to simplify and speed up deployment, which translates into savings.
It is a bit similar to pattern based functional loose coupling, but much more functional, flexible since patterns are more micro-oriented, while structural loose coupling is more about macro delivery via structure.
Having said that patterns still remain an important element in FMVC coder tollset, as they can and should be used inside of module.
 

integrated, advanced interface

  • fast and server friendly via lazy-load
    Interface is fast as most of the content is loaded via AJAX, when content is requested by user. No costly preloading. 
    In addition most of content delivery interface part is rendered by client (jQuery UI dialogs), so it is server resources friendly.
     
  • 3D layered
    Interface uses jQuery UI dialogs to display content. jQuery UI dialogs are not your simple popups.
    They are stackable, draggable, positionable, pinnable and highly flexible in every way necessary.
    They are adjusted to hold any type of content: paging, images, forms (powered by another pluging allowing auto-serialization) etc. Additionally dialog interface element is auto-generated - so one click and it is ready for content.
    Dialogs are seamlessly integrated with other interface elements by specifically designed for this purpose plugin, which offers over a dozen different settings.
    3D means that page loads only necessary content and all of the rest can be loaded in dialogs, without need to reload page or load another. Dialogs are stackable in layers. All lazy-loaded of course, with client generated interface.
     
  • bandwidth friendly, localized action - most functions are built-in or easily attainable.
    By localized action I mean that you can POST form and only form will be reloaded and output displayed - process is aided by FMVC and simple to accomplish.
    Same applies to any other local action, like some other content pull, local paging etc.
     
  • highly stylable
    Main interface template holds location slots, so it can be easily equipped qith e.g. Smarty or other templating system.
    It uses jQuery UI, so themes can be applied.
    Dialogs are also extremely stylable - if instead of squares, you want your pops circle-like - no problem. All you need is some css.

see: example movies below

built-in object delivery system

All classes are autoloaded and auto-instantiated (controllers, models, libs), so they are always available, where needed - just drop them in proper folder, without damaging loose-coupling architecture via unnecessary, hardcoded inheritance/instantiation.

see: example movies below

 

no abstraction layer

Nothing between you and PHP/MySQL, so you do not need to worry, if maintainers are up to a task to keep up with PHP/MySQL upgrades.

see: example movies below

 
one-click auto-generation of most used interface, functional elements etc.
  • autogeneration of self contained modules with full MVC filesystem
  • autogeneration of controllers and models 
  • autogeneration of methods
  • codebits: autogenerated, targetted, copy'n'paste code starters (time saving)
  • code templates: autogenerated templates for repetitive elements, sporting AJAX powered, lazy-load interface, e.g.:
    • 8 types of paging,
      which can be easily transformed to image rotator, or content delivery switch etc.
    • dialog, great for
      • on-demand loaded, AJAX powered forms with lot of codebit support
      • lazy loaded, on-demand content
      • pretty much anything
      • with capacity for easy styling
      • and much more
    • methods with codebit support

see: example movies below

optimization and enhanced security via system areas: front, user, admin

FMVC project structure is divided into 3 areas:

  • front area: standard, front-end unprotected area, where anyone with url/link can enter
  • user area: front end protected user account area
  • admin area: protected back-end system admin area

Coder does not need to implement any security measures. All he has to do, is to auto-generate module/controller/method in user/admin area and it is automatically password protected.
There is more protection offered by system - read on.

see: example movies below

advanced, multilevel content access protection

  • indiscriminate password protection (in, or not) of entire system areas: front user / back-end andmin
  • content access protection:
    • entire pages accessible to users with poper access levels
    • selected page content (module delivered)  accessible to users with poper access levels

see: example movies below

front vortal capable

Vortal = vertical portal.
Own vortal area / specific menus (more can be developed this way).

see: example movies below

almost flat learning curve for developers

All they need to know is PHP/MySQL/jQuery - no need to learn FMVC really, since it is interfaced.

see: example movies below

 

supports different languages

Via easy to apply, file held language constants.

see: example movies below

 
easy and fast to launch new project - regardless of size - which equals lesser costs and decent profitability
 
Launching a new project would be as easy as pulling self-contained modules from repository (once it saturates) into location slots and doing some styling to meet customer needs;
any custom coded modules will simply add to repository and you can profit additionally by offering them to existing customers.

see: example movies below

 

easy to generate functional content ecosystem for FMVC

  • module written for one customer can be easily used for all of customers using FMVC - since they are self contained (if properly coded), they will fit in other FMVC systems, given customer has need for them
    • so work paid by one customer can be sold to other customers
    • self-contained modules can make independent developers to pitch-in
    • self-contained modules will allow work to be comissioned from rent-a-coder sites - just pack FMVC with e.g. IONCUBE and make available for download for any external coder
      module built for such FMVC developer distrubition will work in any customer using FMVC

see: example movies below

 

more sales friendly

Every sales can be supported by demo, a fully functional system for prospective customer.
Since it can be almost one-click deployed, if proper tool script is available, since modules can be pulled from repositiory and can fill selected template.
All you need is some styling and even that can be done via some templating system either purpose built, or external like Smarty.

see: example movies below

 
hash deployed - each page/module/method has its own unique hash
  • prevents long urls
  • helps with URL SEO
  • helps modules to operation and deployment

see: example movies below

 

detailed sample movies
most of core engine functionality demonstrated in several short demo movies

 

Built-in menu maker utility.
Allows to create separate menus for each area: front, admin and user.
In case of front area, it allows to create separate menus for each vortal. There is more.
time - 2:17
Deployment removal.
Deployed module can be un-deployed - if it does not pull any other modules into its body.
In general, it is a process of connecting target page (page/module where deployed module will show), location slot on that page and module itself.
Please see main movie (top) to better understand what is deployment all about.
time - 0:36
Access control to selected content on page.
Access control to selected areas of displayed page only.
It works in protected areas only (admin, user) - as we need to know, who is the user.
time - 1:23
Location slots.
In order to achive deployment versatility without hardcoding FMVC uses deployment location slots.
Here is short movie about how to create one and how to use it.
Please see main video to see this manager used in a full module deployment process.
time - 2:08
System modules.
FMVC offers a construct called system module. It has nothing to do with "3rd modules". It is a simple construct allowing for simple tasks to be acomplished. However, even with simple tasks - 3rd are better, as they offer unlimited capacity for further development of given module.
time - 1:17
3rd Party Modules
"3rd Party Modules" name comes from earlier versions, where they were reserved for 3rd party development. Assumption was that 3rd party developer can create a fully functional, detachable, self-contained, plug'n'play module without access to vital system areas - just by using developer version of FMVC. This approach was so versatile and successful in testing, that it took over entire "independent building block" concept.
time - 1:35
Module deployment
It is a proces of connecting target page/module (where selected module will be displayed), location slot (which part of target page module will be displayed and module itself.
time - 1:33
Project structure - "who pulls whom"
When you start pulling modules inside of modules and create lots of layers, you can loose control.
Project structure tool allows to regain it. It shows a list of all topmost, standalone pages and downward tree structure "who pulls whom".
time - 0:56
Auto-generated code template: 3rd party module
This movie shows how to create coding environment for standalone, 3rd module based page. Pulled version creation is showed in main movie. Creation process differs very little, end result - quite a lot.
Environment created here does some complex job, which otherwise needs to be done by coder, by-hand.
time - 1:30
Auto-generated code template: 3rd party controller complex
This template allows a one click creation of a new controller/model/view elements within existing module MVC structure. It is a perfect solution for additional page within task manager delivered by module, or additional content pulled into location slot on one of modules pages, or even some other, external location.
time - 1:30
Auto-generated code template: 3rd party method
System can auto-generate methods and register them with system's registry.
There are 2 types (in general): render: for displying things and action: for processing things.
Note: system should always work via controller/model method tandem - access to model method should never be direct (even thout it works), but via its controller method companion, also when you need new method, do not create it directly inside of class, but generate it and paste codebits. It does not take more time really, since as a bonus, system auto-creates view files and adds corresponding directories (for render method only), creates language files, updates all db tables and adds method to internal auto-reporting (inheritance, pull-tree etc.). Movie shows generation of a render method.
time - 1:20
Auto-generated code template: Main MVC - front area - new controller
This movie shows how to launch new controller coplex for one of front vortals.
Vortal = vertical portals .. for more read above on this page.
time - 0:45
Auto-generated paging template: type 1
A basic, standard, full page ajax powered paging. Obsolete with fully tooled v.5/6/7/8, but still left available.
time - 1:18
Auto-generated paging template: type 2
It has set of tools: sorting and search.
However search shows results not by navigating to searched item on the list, but by opening items results in a sialog pop. Also this type generates non-index, sel-sufficient render method.
time - 1:40
Auto-generated paging template: type 3
Paging type 3 is a variation of paging type 2.
Only difference is that instead of generating its own render method, it generates a hook, which should be placed into index method of main controller.
time - 2:08
Auto-generated paging template: type 4
Type 4 paging is a paging with full toolset located inside of a popup dialog. Results are shown in dialogs.
time - 2:43
Auto-generated paging template: type 5
Type 5 is similar to types 2/3 as it also have search and sorting built-in. There are some significant differences thou. It is hosted by a dialog popup and it processes non-DB data, e.g. dir structure, delimited file data etc.
time - 2:10
Auto-generated paging template: type 6
Type 6 is similar to type 5. It also processe non-DB data, e.g. dir structure, delimited file data etc. Only difference is that it is displayed on a standalone page. It can also be pulled in.
time - 2:16
Auto-generated paging template: type 7
Type 7 is similar to type 5 as it also have search and sorting built-in and is hosted by a dialog pop. Only difference is that it processes DB based data.
time - 2:02
Auto-generated paging template: type 8
Type 8 is similar to type 6 as it also have search and sorting built-in and is hosted by a page - not dialog. Only difference is that it processes DB based data.
time - 1:52
Auto-generated code template: dialog generation
This manager allows a one-click creation of a dialog interface. It also allows additional action method to be added, if dialod is meant to host a form. Additionally it provides standard form codebits, auto-serialisation plugin, serialized data receiving code in processing method (just copy'n'paste) etc.
time - 2:07
Main MVC right tool sidebar demo
Main MVC manager is a heart of FMVC. It allows codebit autogeneration, sets access permissions to a page and more.
time - 2:02