As a business client, you probably think you shouldn’t care about technical stuff after all, it’s
a job for developers. But in fact, some technical knowledge is really powerful.
The current webdevelopment world is full or “random” keywords and technologies, it’s so easy to get lost and give up on it. Don’t worry, I will try to translate it all to you in a nontechnical manner.
That’s, actually, one of the main responsibilities of a webdeveloper or agency to be able to describe things to the client in their language, so that both sides are on the same page about the project and terms.
Some technical knowledge not only helps you to run the project smoother and understand technical guys better , but you will be also able to choose your developers more wisely.
By understanding what Laravel is, and other terms mentioned in this chapter/ebook, you will potentially finish your project quicker and with a lower budget, because your decisions will be more effective based on actual knowledge and understanding, and not just because someone said something.
You will also be able to formulate the tasks in a better way and prepare a better brief for the future projects.
Every webproject consists of two main parts:
- Invisible “backend” logic which defines how a project WORKS;
- Visible “frontend” code which defines how a project LOOKS.
That’s the basic difference, although these aspects get merged quite a lot backend functionality is moving to frontend “effects”, but let’s not get too complicated here.
Essentially, there are backend and frontend programming languages/technologies.
Backend languages can be: PHP, Ruby, Python, Java etc. Basically, you choose a primary language for the project.
Frontend is a little more complicated in terms of languages:
- There’s HTML , which is basic markup language for website layout it’s not even programming;
- Then there’s CSS a language for styling website elements colors, sizes, fonts,spacing etc. CSS is also not really a programming language, it’s used mostly for styling;
Ok, so there are programming languages. And most of them have their own different frameworks or additional sublanguages we’ll talk about them a little later. But again, let’s not dive too deep here it’s enough to know the basic difference between backend and frontend.
Although both frontend and backend seem about programming and code writing, it requires a little different mindset and skills backend development is more about logic, and frontend is about visual stuff. Therefore usually it’s two different developers, two people.
Alternatively, there are socalled “ fullstack” developers who are skilled in both frontend and backend development. Or at least they claim they are. In my experience, these people are still more qualified in one or the other they are backenders with “good enough” knowledge about frontend, or vice versa. So be careful with assigning the whole website to one person that attempt to potentially save money might turn into saving on quality.
You probably understand the concept of a programming language let’s call it “a set of syntax rules to write code”. Languages are PHP, Ruby, Python, Java, C++ etc.
At some point of programming evolution, developers saw some repeating code appearing over and over again. Then they tried to package the repeating parts in various ways set of classes, snippets, packages, and then it emerged into frameworks.
Basically, a framework is a set of prewritten functionality on top of programming language to avoid reinventing the wheel and creating some functionality every time for every new project.
For example, login/logout functionality for websites, folder structure of the project, URL parsing and calling the function needed (also called “routing”) etc. It’s all been done before, so why start from scratch when you can use a framework.
Since we’re talking about Laravel here that’s exactly what Laravel is. A framework of PHP programming language.
Other popular PHP frameworks are: Symfony, Zend Framework, CodeIgniter, Yii, Cake PHP, Phalcon.
There are quite a lot of differences between them, and they are competitors on the market, fighting for popularity and community members I’m happy to say that Laravel is currently the leader, with the closest competitor being Symfony.
There is a big difference between two things which might seem similar “frameworks” and “content management systems” (CMS). What is the difference and purpose of each group?
Let’s start with CMSs. If we “translate” the name they are systems for managing content. And content managers are usually not developers they are people who take care of the copy, images and text. So that’s the main purposes of CMSs give those people a tool to fill in the content.
With frameworks it’s a big difference it’s a tool for developers to save time on writing code for some functionality.
Will rephrase it in other words. You can take a CMS and install it on your server (almost) without any techexperience. They usually come with visual installers, dragdrop visual interface and dumbuserproof settings.
Whereas in case of framework the result of their code is, well, more code. You have to be a coder to use framework.
Examples of popular CMSs : WordPress, Drupal, Joomla
Examples of popular frameworks: Laravel, Symfony, Django
Now, a question if you want to create a website, when to use a CMS, and when to create a project “from scratch” with a framework? It’s a little complicated, but the simplest explanation is this: if your project is about content (blog, news portal, company articles etc.), then try to use a CMS. And if your project is about custom data generated by users (profiles, messages, payments etc.) then it’s probably a framework.
Now, let’s take on the holywar between frameworks. I’m not kidding here developers actually fight (verbally only, I hope) with each other about what framework to use.
So, in general, there’s not much difference, actually. It’s a matter of how well a particular person is familiar with a certain framework so a person who has created 10 projects with Laravel would probably deliver faster and with more quality than a developer with 12 projects experience with Symfony framework.
There is some classification in the frameworks world there are “full” frameworks (mentioned above) and smaller socalled “microframeworks” examples are Lumen (“stripped” Laravel version), Slim, Silex, Flight. So except for those microframeworks, any uptodate modern framework can do the job.
Speaking of “uptodate”, this is probably the most important argument in this question. Since you’re probably creating a project with plans to update and maintain it in the future, you need a framework with a big enough future and strong community to support it. So currently on the PHP market there are two strong leaders from that perspective: Laravel and Symfony . All the others are less popular, for different reasons some abandoned by their creators (CodeIgniter), some are too complicated (Zend Framework), some have too small communities (Yii, Cake PHP).
Now, how to choose between market leaders Laravel vs Symfony? Both are really good and I can recommend both. The main difference between them is strictness of the code structure. Symfony is much more strict in the way how the code is written, therefore more popular in enterpriselike applications, and Laravel allows more “freedom” to developers and therefore is more popular in smaller webapps with lower entry to devmarket.
Also, for those same reasons Symfony developers tend to be more expensive simply put, there are less Symfony professionals in comparison to Laravel.
But whichever you choose for your project it’s more about finding a right developer in that framework space, than framework choice itself.
Basically, to rephrase the question, what projects are the best fit for the Laravel framework. The answer will be based on my own experience seeing the clients and project offers online on social networks and job boards like Upwork and such.
- Two-sided user-based marketplaces
Basically, there are a lot of similar projects where one group of people want to order something from another group of people. It might be services, products or just communication. For example, Upwork is a twosided marketplace, or any freelance job board. Another example can be riding service where (before Uber) one group of people could give a ride to other group of people. Something like that.
- Data management and adminpanel-like projects
If your company needs to handle the data and any offtheshelf CRM is not suitable for your particular case (or is too complicated), you can create your own with Laravel I’ve created a lot of such projects myself for such markets as loan management, event management, immigration documents handling, window repair company processes etc.
- Technical integration and API-like projects
There are a lot of APIs these days basically, it’s a set of functions for external usage. For example, to automatically post on Facebook you have to use their API functions. So there can be a lot of projects based on using existing external APIs or creating your own API for others to use for your own mobile app/portal or other websites.
There might be much more projects, but these are three main ones I see on the market.
Every framework has its own version history it’s being maintained and updated. So every new version brings new functionality, some functions are changed or deprecated, so it’s quite important to know which version you will be using for your projects.
Currently on the market there are two active Laravel versions Laravel 4 (released in May 2013) and Laravel 5 (released in February 2015).
Also each of major versions have their own subversions:
- Laravel 4 has 4.0, 4.1 and 4.2 branches
- Laravel 5 has 5.0, 5.1, 5.2 and, at the moment of writing, 5.3 should be released in July2016.
According to the roadmap released by framework author, there should be a new subversion every halfyear:
- Laravel 5.3: July 2016
- Laravel 5.4: January 2017
- Laravel 5.5: July 2017
Also there is an important term LTS version, which stands for Long Term Support . That means that bugfixes for that version will be provided for 2 years, until the next LTS version. For nonLTS versions bugfixes are promised for 6 months only, unless it’s a security fix which is provided for 1 year from the version release date.
The first, and so far the only, version to have that status is Laravel 5.1. The next LTS version is promised to be Laravel 5.5 due to release in June 2017.
Differences between Laravel 4 and Laravel 5
Laravel 4 version was the one which brought big popularity to Laravel framework, but it’s not updated anymore, and also it lacks a lot of functions released in Laravel 5.
So, in short, for new projects it’s not advised to use Laravel 4.x version you should use Laravel 5.x, probably Laravel 5.1 as it has long term support, or Laravel 5.2 as the newest version at the time of writing this.
Differences between Laravel 5.0, 5.1, 5.2, 5.3
In contrast to Laravel 4 to 5 version differences, which were breaking and huge, 5.x and 5.y versions are not that different. Some functions added, some updated/removed, but the core structure remains the same.