Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Full stack versus non-full stack MVC PHP frameworks - what's the difference?

I keep seeing CakePHP and CodeIgniter referred to as full stack MVC frameworks, whereas Zend Framework is said to be non-full stack. What exactly does this mean?

like image 594
Steven Mercatante Avatar asked Oct 01 '09 22:10

Steven Mercatante


People also ask

What is full stack MVC?

NET, MVC Framework. A full-stack developer is a developer who can handle all the work of databases, servers, systems engineering, and clients. Depending on the project, he can either work on a mobile stack, web stack or a native application stack. Stack refers to a collection of sub-modules.

What does full stack framework mean?

What is a full stack? The full stack incorporates both client and server software frameworks, libraries, and tools to help create an effective application or website. This includes browser programming using JavaScript, jQuery, Angular, Vue, and others) and server programming using ASP, Python, Node, PHP, and others.

What is the difference between a full stack framework and a micro framework?

A microframework is a term used to refer to minimalistic web application frameworks. It is contrasted with full-stack frameworks. It lacks most of the functionality which is common to expect in a full-fledged web application framework, such as: Accounts, authentication, authorization, roles.


1 Answers

Zend Framework is a use-at-will framework, which allows you to use some of its components. You could even use some of these components in an application built using some different framework. In this way, a use-at-will framework is more like a class library.*

A full-stack framework means that using any part of it depends on you using all of it. For instance, you must use the framework's data access library, MVC architecture, code-generating scaffolding, etc. and these components all rely on each other working together to form the complete framework.

Re your comment: Yes, coupling is one way of looking at it. I look at it as a balance between assumptions and flexibility. A full-stack framework assumes you're using the whole framework together, and from that assumption it can make some extra magic happen.

ZF was designed to minimize the assumptions (that is, minimize the coupling). Its components make few assumptions about whether you're using the rest of the components, reducing dependencies but increasing flexibility. But fewer assumptions means less magic.

Both styles of framework have legitimate advantages.


* One key difference between a plain class library and a framework is that a framework is intended to be extensible. You're encouraged to enhance the functionality of a framework through OO mechanisms like subclassing or polymorphism. Whereas a class library may assume you will use its API as-is, without extending its functionality.

like image 70
Bill Karwin Avatar answered Sep 20 '22 23:09

Bill Karwin