An excerpt from http://www.sitepoint.com/nette-framework-first-impressions/, by Taylor Ren
SitePoint’s PHP channel conducted its annual survey on the most popular framework of 2015 and the results were discussed here.
We saw some familiar names: Laravel, Symfony2, Phalcon, Silex, Slim, etc. But wait, what is this: Nette?
According to the survey result, it ranked number 3 in both “at Work” and “in Personal Projects”, just tailing the two giants: Laravel and Symfony2.
I had never heard of this framework before the survey results got published. A framework so popular is worth looking into. Thus, in this article, we will take a look at Nette, see what it can do and discuss some of the features.
NOTE: We will base our review on the official Getting Started tutorial.
Nette uses a self-bootstrap approach (similar to Laravel) with the support of
composer create-project nette/sandbox demo
This will create a
demo directory in the current one, and a sandbox project will be loaded into said folder.
Nette’s Getting Started tutorial guides us through building a simple blog app which features basic blog functions like: list all posts, view an individual post, create/edit a post, comments, security etc.
Let me show you what the app will look like when you finish the tutorial (I have not added any CSS to it so the overall appearance is quite rudimentary):
NOTE: This is served in a Vagrant box.
In the next few sections, we will look at some of the fundamental concepts in Nette. As I am a long-time user of Symfony2 (SF2), I will use that for comparison most of the time. Please note that the comparison notes are purely my personal view.
Nette is considered to be an MVC framework, though its “Model” layer is almost missing. Its project structure also reflects this but is organized in a very different way:
Above project structure is taken from Nette’s tutorial
Like in SF2, a dedicated
web in SF2) directory is there to hold the entry PHP file:
index.php and also
.htaccess rules to provide rewrite instructions for Apache. It will also contain static resources (CSS, JS, fonts, images, etc).
vendor will hold all the vendor libraries, as usual.
Many other folders will go under
config: As its name suggests, all the configuration resides here. Nette uses
config.local.neon to provide configuration information related to database, security, services, app-wide parameters, etc. Nette will load
config.neon first and then
config.local.neon. The latter will override the same parameters defined in the former, as is common in other frameworks as well. You can find out about the Neon file format here.
presenters/templates: these two folders cover the controller and the template (view) portion. Nette uses Latte as its template engine. More on Latte later, and no Cappuccino – sorry.
router: it holds the route factory class to customize pretty URIs and thus creates a bridge between a URI and a controller/action. More on this later.