SlideShare a Scribd company logo
1 of 89
Download to read offline
From Spaghetti to MVC
Hanafiah Yahya
Who is Hanafiah Yahya?
● Muhamad Hanafiah Bin Yahya
● Digital Immigrants generations
● Started programming, 1997 - MIRC script, VBA, Pascal,
● https://my.linkedin.com/in/hanafiahyahya
Our Awesome Programs
http://www.kreydle.com/academy/
Kreydle Academy
● CSR - Corporate social responsibility
● Non profit initiative…
● We contribute back to community
● Helping Graduates Gain the competitive
edge
● fill in the gap between university and what
industry really want
● Its free for student
Kreydle Academy
● Want to contribute?
● Help us spread the word. share with your
friends on twitter, facebook, blog and any
medium that you have
● or Join us as guest speaker
http://www.kreydle.com/academy/
http://www.kreydle.com/internship/
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
Survey
1. Home many students/fresh graduate here?
2. Code in PHP?
3. Used MVC?
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
http://www.venicecafechicago.com/wp-content/uploads/2014/07/venicea01.jpg
Spaghetti
Why Spaghetti? - metaphor
Things get really messy when connecting each
other
back to the invention of
http://i144.photobucket.com/albums/r166/Funnyoldlife/tin-can-telephone.jpg
A
B
Spaghetti
A
B
C
Spaghetti
A
B
C
D
E
F
Spaghetti
A
B
C
D
E
F
G
H
I
J
Spaghetti
A
B
C
D
E
F
G
H
I
J
Formula
# Phones # Lines/ Connections
2 1
3 3
4 6
5 10
10 45
20 190
1000 ?
Formula
# Phones # Lines
10 45
20 190
1000 499,500
Formula
#Lines = ( p * ( p - 1 ) ) / 2
*p = phone
Where is my server?
Spaghetti Code
1) Spaghetti code is a specific [ goto 8 ]
2) written in order, but splattered [ goto 9 ]
3) allowed to jump to a specific [ goto 7 ]
4) the goto statement, which [ goto 3 ]
5) a set of instructions is not [ goto 2 ]
6) spaghetti. It often refers to [ goto 4 ]
7) line of code. [ end ]
8) kind of bad coding, where [ goto 5 ]
9) all over the place ( like a knotted [ goto 6 ] )
Solution?
Solution? better design pattern
HUB
Result
# Phones # Lines
2 1
3 3
4 6
5 10
10 45
20 190
1000 499,500
# Phones # Lines
2 2
3 3
4 4
5 5
10 10
20 20
1000 1000
Original Refactor
MVC
Heroes
http://www.helenbrowngroup.com/wp-content/uploads/2014/09/info-pro-as-superman.jpg
Enough Theory!
Lets see some code
SQL Query
DB Connection
SQL Query
HTML Code
Business Logic
Presentation
Presentation
Spaghetti Code
http://masterphp.local/spaghetti/
https://github.
com/hanafiah/masterphp/tree/master/spaghetti
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
History
Invented in 1979 by Smalltalk programmers,
Trygve Reenskaug
It is software design pattern
http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html
History
1979?.. so old
Made popular by Ruby On Rails
initial release on 2005 and
adapted by PHP community
https://upload.wikimedia.org/...n_Rails.svg.png
Why MVC?
● Organized & structured
● Separation of code
● loose coupling
● Easy code maintenance
● Reusable code. DRY - Don’t Repeat
Yourself
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Model
View Controller
User
Uses
ManipulateUpdates
Sees
- Represent Knowledge
- Manages data, logic and rules of the application.
- Business Logic
Model
View Controller
User
Uses
ManipulateUpdates
Sees
- The output, whats user see.
- Visual represent of the Model
- Presentation layer
Model
View Controller
User
Uses
ManipulateUpdates
Sees
the middleman / link between user and
the system
Model
View Controller
User
Uses
ManipulateUpdates
Sees
The flow
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
http://www.makemark.co.uk/wp-content/uploads/2011/05/infooverload_full.jpg
PHP MVC Frameworks
1. CodeIgniter
2. Laravel
3. Symfony
4. CakePHP
5. FuelPHP
6. YII
7. … more
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
Why CodeIgniter
Why not CakePHP or Laravel or Symfony or
FuelPHP or YII or Zend Framework or Kohana
or Zoop or Akelos or PHP on Trax or Prado or
Seagull or …?
Why CodeIgniter
Because you’ve gotta pick one
That being said, CI is
not dead!
● easy to understand
● simple, doesn't require advance OOP
● quick to get up and running
● good docs
CodeIgniter is a powerful PHP framework with
a very small footprint, built for developers who
need a simple and elegant toolkit to create full-
featured web applications.
CodeIgniter
http://www.codeigniter.com
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Model
View Controller
User
Uses
ManipulateUpdates
Sees
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
Config - database
application/config/database.php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => ‘master_php’,
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
http://www.codeigniter.com/user_guide/database/configuration.html
<?php
$host = 'localhost';
$dbname = 'master_php';
$user = 'root';
$pass = '';
try {
// Connecting to MySQL
$dbh = new PDO("mysql:
host=$host;dbname=$dbname", $user,
$pass);
Config - autoload
application/config/autoload.php
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
Model
View Controller
User
Uses
ManipulateUpdates
Sees
http://www.codeigniter.com/user_guide/general/models.html
Models
application/models/m_users.php
<?php
public function get_users()
{
$query = $this->db->get('users');
return $query->result();
}
<?php
// Get all users
$stmt = $dbh->prepare("SELECT * FROM users");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
Model - Get all users
<?php
public function insert()
{
$this->name = $this->input->post('name'); //
similar to $_POST['name'];
$this->age = $this->input->post('age');
$this->email = $this->input->post('email');
$this->db->insert('users', $this);
}
<?php
$stmt = $dbh->prepare("INSERT INTO users ( name,
age, email ) values ( :name, :age, :email )");
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':age', $age, PDO::PARAM_INT);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$name = $_POST['name'];
$age = $_POST['age'];
$email = $_POST['email'];
$stmt->execute();
Model - Add new user
<?php
public function update()
{
$this->name = $this->input->post('name'); //
similar to $_POST['name'];
$this->age = $this->input->post('age');
$this->email = $this->input->post('email');
$this->db->update('users', $this, array('id' =>
$this->input->post('id')));
}
<?php
$stmt = $dbh->prepare("UPDATE users SET name = :
name, age = :age, email = :email WHERE id = :id");
$stmt->bindParam(':name', $name, PDO::PARAM_STR);
$stmt->bindParam(':age', $age, PDO::PARAM_INT);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':id', $id, PDO::PARAM_INT);
$name = $_POST['name'];
$age = $_POST['age'];
$email = $_POST['email'];
$id = $_POST['id'];
$stmt->execute();
Model - Edit user
<?php
public function delete($id = FALSE)
{
$this->db->delete('users', array('id' => $id));
}
<?php
$stmt = $dbh->prepare("DELETE FROM users WHERE id =
:id LIMIT 1");
$stmt->bindParam(':id', $id, PDO::PARAM_STR);
$id = $_GET['delete'];
$stmt->execute();
Model - Delete user
Model
github repo
https://github.
com/hanafiah/masterphp/blob/master/mvc/application/mod
els/m_users.php
https://github.
com/hanafiah/masterphp/tree/master/spaghetti
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
http://www.makemark.co.uk/wp-content/uploads/2011/05/infooverload_full.jpg
Model
View Controller
User
Uses
ManipulateUpdates
Sees
http://www.codeigniter.com/user_guide/general/views.html
3 View files
application/views/*
<?php
foreach ($users as $user) {
?>
<tr>
<td><?php echo $user->id; ?></td>
<td><?php echo $user->name; ?></td>
<td><?php echo $user->age; ?></td>
<td><?php echo $user->email; ?></td>
<td>
...
<?php
// Get all users
$stmt = $dbh->prepare("SELECT * FROM users");
$stmt->setFetchMode(PDO::FETCH_ASSOC);
if ($stmt->execute()) {
while ($row = $stmt->fetch()) {
?>
<tr>
<td><?php echo $row['id']; ?></td>
<td><?php echo $row['name']; ?></td>
<td><?php echo $row['age']; ?></td>
<td><?php echo $row['email']; ?></td>
<td>
...
Views - listing
View
github repo
https://github.
com/hanafiah/masterphp/tree/master/mvc/application/views
https://github.
com/hanafiah/masterphp/tree/master/spaghetti
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
Model
View Controller
User
Uses
ManipulateUpdates
Sees
http://www.codeigniter.com/user_guide/general/controllers.html
Controller
A Controller is simply a class file that is named
in a way that can be associated with a URI.
Relation with url
http://example.com/index.php/CLASS/METHOD/PARAM
http://masterphp.local/mvc/index.php/users/edit/2
<?php
class Users extends CI_Controller {
public function edit($id=FALSE)
{
if (isset($_POST['btnEdit'])) {
$this->m_users->update();
redirect('users');
}
$this->view_data['user'] = $this->m_users->get_user($id);
$this->load->view('v_edit_user', $this->view_data);
}
Relation with url
http://example.com/index.php/CLASS/METHOD/PARAM
http://masterphp.local/mvc/index.php/users/edit/2
<?php
class Users extends CI_Controller {
public function edit($id=FALSE)
{
if (isset($_POST['btnEdit'])) {
$this->m_users->update();
redirect('users');
}
$this->view_data['user'] = $this->m_users->get_user($id);
$this->load->view('v_edit_user', $this->view_data);
}
Relation with url
http://example.com/index.php/CLASS/METHOD/PARAM
http://masterphp.local/mvc/index.php/users/edit/2
<?php
class Users extends CI_Controller {
public function edit($id=FALSE)
{
if (isset($_POST['btnEdit'])) {
$this->m_users->update();
redirect('users');
}
$this->view_data['user'] = $this->m_users->get_user($id);
$this->load->view('v_edit_user', $this->view_data);
}
Relation with url
http://example.com/index.php/CLASS/METHOD/PARAM1/PARAM2
http://masterphp.local/mvc/index.php/users/edit/2/3
<?php
class Users extends CI_Controller {
public function edit($id=FALSE, $param = ‘’)
{
if (isset($_POST['btnEdit'])) {
$this->m_users->update();
redirect('users');
}
$this->view_data['user'] = $this->m_users->get_user($id);
$this->load->view('v_edit_user', $this->view_data);
}
application/controllers/*
Controller
git repo
https://github.
com/hanafiah/masterphp/blob/master/mvc/application/contr
ollers/users.php
Topics
1. Spaghetti Code
2. MVC introduction
3. PHP MVC frameworks
4. Working with CodeIgniter
5. Config
6. Model
7. View
8. Controller
9. Continue your journey
pretty url
http://masterphp.local/mvc/index.php/users/edit/2
http://masterphp.local/mvc/users/edit/2
1. add .htaccess to root directory
/applications
/index.php
/.htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
pretty url
http://masterphp.local/mvc/index.php/users/edit/2
http://masterphp.local/mvc/users/edit/2
2. edit config file and delete index.php
applications/config/config.php
<?php
$config['index_page'] = 'index.php';
become
$config['index_page'] = '';
Continue your journey
1. Library - the classes
2. Helpers - set of functions eg: url, {
base_url(), site_url(), anchor() }
3. Database Classes & Helper
4. Custom URL Routing
5. more..
http://suttonschoolswork.co.uk/wp-content/uploads/2014/10/questionmark.jpg
https://www.facebook.com/kreydle
Thank You
Slide
https://goo.gl/dzfn0D
repo
https://github.com/hanafiah/masterphp
https://www.facebook.com/hanafiah.yahya
hanafiah@kreydle.com

More Related Content

What's hot

Streamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web FrameworksStreamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web Frameworksguestf7bc30
 
AngularJS for Legacy Apps
AngularJS for Legacy AppsAngularJS for Legacy Apps
AngularJS for Legacy AppsPeter Drinnan
 
Javascript MVVM with Vue.JS
Javascript MVVM with Vue.JSJavascript MVVM with Vue.JS
Javascript MVVM with Vue.JSEueung Mulyana
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptKaty Slemon
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)Gary Arora
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web ComponentsAndrew Rota
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsHolly Schinsky
 
JavaScript DOM - Dynamic interactive Code
JavaScript DOM - Dynamic interactive CodeJavaScript DOM - Dynamic interactive Code
JavaScript DOM - Dynamic interactive CodeLaurence Svekis ✔
 
20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testingVladimir Roudakov
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSPablo Godel
 
Monster JavaScript Course - 50+ projects and applications
Monster JavaScript Course - 50+ projects and applicationsMonster JavaScript Course - 50+ projects and applications
Monster JavaScript Course - 50+ projects and applicationsLaurence Svekis ✔
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Stéphane Bégaudeau
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)Nicholas Zakas
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practicesHenry Tao
 
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...Katy Slemon
 

What's hot (20)

Streamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web FrameworksStreamlining Your Applications with Web Frameworks
Streamlining Your Applications with Web Frameworks
 
AngularJS for Legacy Apps
AngularJS for Legacy AppsAngularJS for Legacy Apps
AngularJS for Legacy Apps
 
Javascript MVVM with Vue.JS
Javascript MVVM with Vue.JSJavascript MVVM with Vue.JS
Javascript MVVM with Vue.JS
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScript
 
Angularjs
AngularjsAngularjs
Angularjs
 
AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)AngularJS - What is it & Why is it awesome ? (with demos)
AngularJS - What is it & Why is it awesome ? (with demos)
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
The Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.jsThe Point of Vue - Intro to Vue.js
The Point of Vue - Intro to Vue.js
 
Webpack
Webpack Webpack
Webpack
 
JavaScript DOM - Dynamic interactive Code
JavaScript DOM - Dynamic interactive CodeJavaScript DOM - Dynamic interactive Code
JavaScript DOM - Dynamic interactive Code
 
20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing
 
Tek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJSTek 2013 - Building Web Apps from a New Angle with AngularJS
Tek 2013 - Building Web Apps from a New Angle with AngularJS
 
Monster JavaScript Course - 50+ projects and applications
Monster JavaScript Course - 50+ projects and applicationsMonster JavaScript Course - 50+ projects and applications
Monster JavaScript Course - 50+ projects and applications
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)High Performance JavaScript (CapitolJS 2011)
High Performance JavaScript (CapitolJS 2011)
 
Asp net-mvc-3 tier
Asp net-mvc-3 tierAsp net-mvc-3 tier
Asp net-mvc-3 tier
 
AngularJS best-practices
AngularJS best-practicesAngularJS best-practices
AngularJS best-practices
 
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
How to Implement Basic Angular Routing and Nested Routing With Params in Angu...
 
Angular js
Angular jsAngular js
Angular js
 
Vue.js for beginners
Vue.js for beginnersVue.js for beginners
Vue.js for beginners
 

Viewers also liked

Zend Framework Form: Mastering Decorators
Zend Framework Form: Mastering DecoratorsZend Framework Form: Mastering Decorators
Zend Framework Form: Mastering DecoratorsNick Belhomme
 
Rasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php DeveloperRasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php DeveloperArno Schneider
 
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVM
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVMPerformance Comparison of PHP 5.6 vs. 7.0 vs HHVM
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVMJani Tarvainen
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti codeTom Croucher
 
Logic Formulation 3
Logic Formulation 3Logic Formulation 3
Logic Formulation 3deathful
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
Static analysis saved my code tonight
Static analysis saved my code tonightStatic analysis saved my code tonight
Static analysis saved my code tonightDamien Seguy
 
Tour of Vue.js
Tour of Vue.jsTour of Vue.js
Tour of Vue.js선협 이
 

Viewers also liked (13)

Spaghetti Code vs MVC
Spaghetti Code vs MVCSpaghetti Code vs MVC
Spaghetti Code vs MVC
 
Herding cats
Herding catsHerding cats
Herding cats
 
Zend Framework Form: Mastering Decorators
Zend Framework Form: Mastering DecoratorsZend Framework Form: Mastering Decorators
Zend Framework Form: Mastering Decorators
 
Rasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php DeveloperRasmus, Think Again! Agile Framework == Happy Php Developer
Rasmus, Think Again! Agile Framework == Happy Php Developer
 
Zend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJSZend Framework MVC driven ExtJS
Zend Framework MVC driven ExtJS
 
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVM
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVMPerformance Comparison of PHP 5.6 vs. 7.0 vs HHVM
Performance Comparison of PHP 5.6 vs. 7.0 vs HHVM
 
How to stop writing spaghetti code
How to stop writing spaghetti codeHow to stop writing spaghetti code
How to stop writing spaghetti code
 
Logic Formulation 3
Logic Formulation 3Logic Formulation 3
Logic Formulation 3
 
Clean code
Clean codeClean code
Clean code
 
From * to Symfony2
From * to Symfony2From * to Symfony2
From * to Symfony2
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Static analysis saved my code tonight
Static analysis saved my code tonightStatic analysis saved my code tonight
Static analysis saved my code tonight
 
Tour of Vue.js
Tour of Vue.jsTour of Vue.js
Tour of Vue.js
 

Similar to Introduction to Using PHP & MVC Frameworks

Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial之宇 趙
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...IT Event
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principlesEdorian
 
Php mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanPhp mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanphp2ranjan
 
php training in hyderabad
php training in hyderabadphp training in hyderabad
php training in hyderabadphp2ranjan
 
PHP Lab template for lecturer log book- and syllabus
PHP Lab template for lecturer log book- and syllabusPHP Lab template for lecturer log book- and syllabus
PHP Lab template for lecturer log book- and syllabusKavithaK23
 
Twig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC DrupalTwig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC Drupalwebbywe
 
BITM3730Week11.pptx
BITM3730Week11.pptxBITM3730Week11.pptx
BITM3730Week11.pptxMattMarino13
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress DevelopmentAdam Tomat
 
WordCamp LA 2014- Writing Code that Scales
WordCamp LA 2014-  Writing Code that ScalesWordCamp LA 2014-  Writing Code that Scales
WordCamp LA 2014- Writing Code that ScalesSpectrOMTech.com
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in DjangoLakshman Prasad
 
Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-publicChul Ju Hong
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatternsChul Ju Hong
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Jacek Tomaszewski
 
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven PignataroJoomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven PignataroSteven Pignataro
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesShabir Ahmad
 
Spunite17 Converting your CEWP Customisations
Spunite17 Converting your CEWP CustomisationsSpunite17 Converting your CEWP Customisations
Spunite17 Converting your CEWP CustomisationsNCCOMMS
 

Similar to Introduction to Using PHP & MVC Frameworks (20)

Becoming A Php Ninja
Becoming A Php NinjaBecoming A Php Ninja
Becoming A Php Ninja
 
Django Introduction & Tutorial
Django Introduction & TutorialDjango Introduction & Tutorial
Django Introduction & Tutorial
 
Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...Max Voloshin - "Organization of frontend development for products with micros...
Max Voloshin - "Organization of frontend development for products with micros...
 
Save time by applying clean code principles
Save time by applying clean code principlesSave time by applying clean code principles
Save time by applying clean code principles
 
Php mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjanPhp mysql-training online-by_php2ranjan
Php mysql-training online-by_php2ranjan
 
php training in hyderabad
php training in hyderabadphp training in hyderabad
php training in hyderabad
 
PHP Lab template for lecturer log book- and syllabus
PHP Lab template for lecturer log book- and syllabusPHP Lab template for lecturer log book- and syllabus
PHP Lab template for lecturer log book- and syllabus
 
Going web native
Going web nativeGoing web native
Going web native
 
Twig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC DrupalTwig for Drupal 8 and PHP | Presented at OC Drupal
Twig for Drupal 8 and PHP | Presented at OC Drupal
 
BITM3730Week11.pptx
BITM3730Week11.pptxBITM3730Week11.pptx
BITM3730Week11.pptx
 
[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development[Bristol WordPress] Supercharging WordPress Development
[Bristol WordPress] Supercharging WordPress Development
 
WordCamp LA 2014- Writing Code that Scales
WordCamp LA 2014-  Writing Code that ScalesWordCamp LA 2014-  Writing Code that Scales
WordCamp LA 2014- Writing Code that Scales
 
Web Development in Django
Web Development in DjangoWeb Development in Django
Web Development in Django
 
Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-public
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatterns
 
Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1Become a webdeveloper - AKAICamp Beginner #1
Become a webdeveloper - AKAICamp Beginner #1
 
React django
React djangoReact django
React django
 
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven PignataroJoomla! Day Chicago 2011 Presentation - Steven Pignataro
Joomla! Day Chicago 2011 Presentation - Steven Pignataro
 
Drupal 8 - Core and API Changes
Drupal 8 - Core and API ChangesDrupal 8 - Core and API Changes
Drupal 8 - Core and API Changes
 
Spunite17 Converting your CEWP Customisations
Spunite17 Converting your CEWP CustomisationsSpunite17 Converting your CEWP Customisations
Spunite17 Converting your CEWP Customisations
 

More from Gerald Krishnan

Deploy your web app to aws
Deploy your web app to awsDeploy your web app to aws
Deploy your web app to awsGerald Krishnan
 
Ways to power up your brain
Ways to power up your brainWays to power up your brain
Ways to power up your brainGerald Krishnan
 
Indonesia Unique Public Transportation
Indonesia Unique Public TransportationIndonesia Unique Public Transportation
Indonesia Unique Public TransportationGerald Krishnan
 
How to Create a Home Studio
How to Create a Home StudioHow to Create a Home Studio
How to Create a Home StudioGerald Krishnan
 
Successful People Vs Unsuccessful People
Successful People Vs Unsuccessful PeopleSuccessful People Vs Unsuccessful People
Successful People Vs Unsuccessful PeopleGerald Krishnan
 
2015 IT Internship Program at Kreydle
2015 IT Internship Program at Kreydle2015 IT Internship Program at Kreydle
2015 IT Internship Program at KreydleGerald Krishnan
 
Email Marketing Basics - How Email Marketing Works!
Email Marketing Basics - How Email Marketing Works!Email Marketing Basics - How Email Marketing Works!
Email Marketing Basics - How Email Marketing Works!Gerald Krishnan
 
Internship Program Presentation at Kreydle
Internship Program Presentation at KreydleInternship Program Presentation at Kreydle
Internship Program Presentation at KreydleGerald Krishnan
 

More from Gerald Krishnan (10)

Deploy your web app to aws
Deploy your web app to awsDeploy your web app to aws
Deploy your web app to aws
 
12 desk exercise
12 desk exercise 12 desk exercise
12 desk exercise
 
Ways to power up your brain
Ways to power up your brainWays to power up your brain
Ways to power up your brain
 
Indonesia Unique Public Transportation
Indonesia Unique Public TransportationIndonesia Unique Public Transportation
Indonesia Unique Public Transportation
 
How to Create a Home Studio
How to Create a Home StudioHow to Create a Home Studio
How to Create a Home Studio
 
Successful People Vs Unsuccessful People
Successful People Vs Unsuccessful PeopleSuccessful People Vs Unsuccessful People
Successful People Vs Unsuccessful People
 
Blood type personality
Blood type personalityBlood type personality
Blood type personality
 
2015 IT Internship Program at Kreydle
2015 IT Internship Program at Kreydle2015 IT Internship Program at Kreydle
2015 IT Internship Program at Kreydle
 
Email Marketing Basics - How Email Marketing Works!
Email Marketing Basics - How Email Marketing Works!Email Marketing Basics - How Email Marketing Works!
Email Marketing Basics - How Email Marketing Works!
 
Internship Program Presentation at Kreydle
Internship Program Presentation at KreydleInternship Program Presentation at Kreydle
Internship Program Presentation at Kreydle
 

Recently uploaded

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetEnjoy Anytime
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 

Recently uploaded (20)

Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your BudgetHyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
Hyderabad Call Girls Khairatabad ✨ 7001305949 ✨ Cheap Price Your Budget
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 

Introduction to Using PHP & MVC Frameworks