MVC for dummies
@KarandikarMihir
Front End Dev @Harbinger
SSE
3+ years of experience
Javascript, React, React Native
C#, F#, SQL Server
Microsoft Azure
GraphQL

First Name | Last Name |
---|---|
SardarĀ | Khan |
Ramadhir | Singh |
<?php
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");
echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['FirstName'] . "</td>";
echo "<td>" . $row['LastName'] . "</td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
?>
Database logic
Business logic + View logic
Database logic

But it works, right?
Not for real projects!
Why not?
Maintainability
Testability
Reusability
Security
MVC comes to rescue!
Separation of concerns
Code reusability
Cleaner code
Scalable
<?php
function getPersonsFromDatabase() {
$con=mysqli_connect("example.com","peter","abc123","my_db");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM Persons");
mysqli_close($con);
return $result;
}
?>
<table border='1'>
<tr><th>Name</th></tr>
<?php
foreach($users as $user)
{
echo "<tr>";
echo "<td>" . $user['name'] . "</td>";
echo "</tr>";
}
?>
</table>
<?php
if (!isAuthorized()) {
return;
}
$users = getPersonsFromDatabase();
?>
Model
Controller
View

HTTP Server
Request
Response
Where the magic happens
HTTP Server
HTML Pages,
JSON/XML data,
Files
GET, POST, PUT, DELETE, HEAD, OPTIONS etc.
namespace MvcApplication1.Controllers
{
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
public ActionResult About()
{
ViewData["Title"] = "About Page";
return View();
}
}
}
Route Pattern: "{controller}/{action}/{id}"
GET http://server.com/home/about
GET http://server.com/home
Did we solve our problems?
Maintainability
Testability
Scalability
Security
Advanced topics
REST APIs
Single page applications aka SPA
GraphQL
Questions?
Thank you!
MVC for dummys
By Mihir Karandikar
MVC for dummys
- 21