+ All Categories
Home > Documents > MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a...

MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a...

Date post: 06-Feb-2018
Category:
Upload: buimien
View: 242 times
Download: 2 times
Share this document with a friend
116
Architecture MVC in a PHP Web Application The id1354-fw Framework MVC And Frameworks in a PHP Web Application Internet Applications, ID1354 1 / 36
Transcript
Page 1: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

MVC And Frameworks in aPHP Web ApplicationInternet Applications, ID1354

1 / 36

Page 2: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Contents

MVC in a PHP Web Application

The id1354-fw Framework

2 / 36

Page 3: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Section

MVC in a PHP Web Application

The id1354-fw Framework

3 / 36

Page 4: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Object Oriented Design!

I We want the code to be easy to modify andeasy to understand. To achieve this weneed (among other things):

I High Cohesion, Each class, method, etchas well-defined knowledge and awell-defined task.

I Low coupling, Objects and subsystems donot depend on each other more thannecessary.

I Encapsulation, Objects and subsystems donot reveal their internals.

4 / 36

Page 5: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Object Oriented Design!

I We want the code to be easy to modify andeasy to understand. To achieve this weneed (among other things):

I High Cohesion, Each class, method, etchas well-defined knowledge and awell-defined task.

I Low coupling, Objects and subsystems donot depend on each other more thannecessary.

I Encapsulation, Objects and subsystems donot reveal their internals.

4 / 36

Page 6: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Object Oriented Design!

I We want the code to be easy to modify andeasy to understand. To achieve this weneed (among other things):

I High Cohesion, Each class, method, etchas well-defined knowledge and awell-defined task.

I Low coupling, Objects and subsystems donot depend on each other more thannecessary.

I Encapsulation, Objects and subsystems donot reveal their internals.

4 / 36

Page 7: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Object Oriented Design!

I We want the code to be easy to modify andeasy to understand. To achieve this weneed (among other things):

I High Cohesion, Each class, method, etchas well-defined knowledge and awell-defined task.

I Low coupling, Objects and subsystems donot depend on each other more thannecessary.

I Encapsulation, Objects and subsystems donot reveal their internals.

4 / 36

Page 8: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The MVC Architectural PatternI The MVC pattern states that the application contains

the layers Model, View and Controller.

I View contains all code related to the user interface,but no other code. User interface code includes bothcode that generates a UI and code that interpretsuser actions.

I Model contains all data and methods that operate onthe data. This is the actual functionality of theapplication.

I Controller is an intermediary between View andModel. Each user action should correspond to onemethod call from view to controller. It is the task ofthe controller to know in detail which objects andmethods in the model should be called (and in whichorder) to perform a particular task.

5 / 36

Page 9: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The MVC Architectural PatternI The MVC pattern states that the application contains

the layers Model, View and Controller.

I View contains all code related to the user interface,but no other code. User interface code includes bothcode that generates a UI and code that interpretsuser actions.

I Model contains all data and methods that operate onthe data. This is the actual functionality of theapplication.

I Controller is an intermediary between View andModel. Each user action should correspond to onemethod call from view to controller. It is the task ofthe controller to know in detail which objects andmethods in the model should be called (and in whichorder) to perform a particular task.

5 / 36

Page 10: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The MVC Architectural PatternI The MVC pattern states that the application contains

the layers Model, View and Controller.

I View contains all code related to the user interface,but no other code. User interface code includes bothcode that generates a UI and code that interpretsuser actions.

I Model contains all data and methods that operate onthe data. This is the actual functionality of theapplication.

I Controller is an intermediary between View andModel. Each user action should correspond to onemethod call from view to controller. It is the task ofthe controller to know in detail which objects andmethods in the model should be called (and in whichorder) to perform a particular task.

5 / 36

Page 11: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The MVC Architectural PatternI The MVC pattern states that the application contains

the layers Model, View and Controller.

I View contains all code related to the user interface,but no other code. User interface code includes bothcode that generates a UI and code that interpretsuser actions.

I Model contains all data and methods that operate onthe data. This is the actual functionality of theapplication.

I Controller is an intermediary between View andModel. Each user action should correspond to onemethod call from view to controller. It is the task ofthe controller to know in detail which objects andmethods in the model should be called (and in whichorder) to perform a particular task.

5 / 36

Page 12: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Remember: Server-Side Layers

I The server has the same layers asa stand-alone MVC architecture.

I The server’s view layer gets HTTPrequests and creates HTTPresponses.

I The MVC pattern states that all UIrelated code shall be in the view.From controller and down there isonly plain object-oriented code.

I This means that controller and lower layers arecoded exactly as for a stand-alone application. Onlythe view is specific for a web application.

6 / 36

Page 13: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Remember: Server-Side Layers

I The server has the same layers asa stand-alone MVC architecture.

I The server’s view layer gets HTTPrequests and creates HTTPresponses.

I The MVC pattern states that all UIrelated code shall be in the view.From controller and down there isonly plain object-oriented code.

I This means that controller and lower layers arecoded exactly as for a stand-alone application. Onlythe view is specific for a web application.

6 / 36

Page 14: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Remember: Server-Side Layers

I The server has the same layers asa stand-alone MVC architecture.

I The server’s view layer gets HTTPrequests and creates HTTPresponses.

I The MVC pattern states that all UIrelated code shall be in the view.From controller and down there isonly plain object-oriented code.

I This means that controller and lower layers arecoded exactly as for a stand-alone application. Onlythe view is specific for a web application.

6 / 36

Page 15: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Remember: Server-Side Layers

I The server has the same layers asa stand-alone MVC architecture.

I The server’s view layer gets HTTPrequests and creates HTTPresponses.

I The MVC pattern states that all UIrelated code shall be in the view.From controller and down there isonly plain object-oriented code.

I This means that controller and lower layers arecoded exactly as for a stand-alone application. Onlythe view is specific for a web application.

6 / 36

Page 16: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class Files

I It is a good practice to organizeserver-side code as in a Javaapplication. One file per class and onedirectory per namespace.

I Place all classes in a separatedirectory, for example classes.

I Protect classes from direct HTTPaccess by denying access to theclasses directory.

I Enable autoloading classes, seebelow. This relieves us of includeand require statements.

7 / 36

Page 17: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class Files

I It is a good practice to organizeserver-side code as in a Javaapplication. One file per class and onedirectory per namespace.

I Place all classes in a separatedirectory, for example classes.

I Protect classes from direct HTTPaccess by denying access to theclasses directory.

I Enable autoloading classes, seebelow. This relieves us of includeand require statements.

7 / 36

Page 18: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class Files

I It is a good practice to organizeserver-side code as in a Javaapplication. One file per class and onedirectory per namespace.

I Place all classes in a separatedirectory, for example classes.

I Protect classes from direct HTTPaccess by denying access to theclasses directory.

I Enable autoloading classes, seebelow. This relieves us of includeand require statements.

7 / 36

Page 19: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class FilesI It is a good practice to organize

server-side code as in a Javaapplication. One file per class and onedirectory per namespace.

I Place all classes in a separatedirectory, for example classes.

I Protect classes from direct HTTPaccess by denying access to theclasses directory.

I Enable autoloading classes, seebelow. This relieves us of includeand require statements.

7 / 36

Page 20: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.

I We do not want HTTP access toour classes directory.

I We can not write a URL thataddresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes.

8 / 36

Page 21: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.I We do not want HTTP access to

our classes directory.

I We can not write a URL thataddresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes.

8 / 36

Page 22: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.I We do not want HTTP access to

our classes directory.I We can not write a URL that

addresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes.

8 / 36

Page 23: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.I We do not want HTTP access to

our classes directory.I We can not write a URL that

addresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes.

8 / 36

Page 24: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.I We do not want HTTP access to

our classes directory.I We can not write a URL that

addresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes. 8 / 36

Page 25: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View FilesI We would like to place the view in

classes. However:I We do not want HTML in our

PHP classes.I We do not want HTTP access to

our classes directory.I We can not write a URL that

addresses a method in a class.A URL can only address a file.

I Therefore, we need a PHP file withoutclasses to interpret the HTTP requestand direct it to the correct classes.

I If the response is a HTML document,we also need to include a HTML file,since we do not want to mix the HTMLdocument with the PHP classes. 8 / 36

Page 26: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).

I Route a HTTP request to a method in a class.I Read HTTP parameters.I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 27: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.

I Read HTTP parameters.I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 28: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.I Read HTTP parameters.

I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 29: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.I Read HTTP parameters.I Include the file with the next view.

I Include fragments (header, footer, etc) in theview.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 30: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.I Read HTTP parameters.I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 31: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.I Read HTTP parameters.I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 32: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Warning: Infrastructure Code!

I There will be quite a lot of code that isidentical for each application, for exampleto:

I Include class files (load classes).I Route a HTTP request to a method in a class.I Read HTTP parameters.I Include the file with the next view.I Include fragments (header, footer, etc) in the

view.

I This is called infrastructure code and is astrong call for a framework.

9 / 36

Page 33: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.

I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 34: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.

I Avoid writing new code which meansintroducing new bugs.

I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 35: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.

I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 36: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.

I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 37: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.

I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 38: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.

I Preferably, the framework should usecallbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 39: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 40: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

We Must Use a Framework

I A framework is necessary to:I Reuse code from previous applications.I Avoid the big risk of bad architecture.I Avoid writing new code which means

introducing new bugs.I Thoroughly tested and proven to work well.I Lots of documentation, easy to get help.I Infrastructure code is difficult to write.I Preferably, the framework should use

callbacks, i.e., the framework calls our code.Thus, the framework also handles flow control.

10 / 36

Page 41: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Exactly What is the Framework’sTask?

I First, we will look at the chat applicationwithout a framework, to get a feeling forwhat is needed.

I We will look at a sample request, namely towrite a new entry in the conversation.

I Then, we will identify what we need theframework to do.

I Third, we will look at the chat with aframework.

11 / 36

Page 42: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Exactly What is the Framework’sTask?

I First, we will look at the chat applicationwithout a framework, to get a feeling forwhat is needed.

I We will look at a sample request, namely towrite a new entry in the conversation.

I Then, we will identify what we need theframework to do.

I Third, we will look at the chat with aframework.

11 / 36

Page 43: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Exactly What is the Framework’sTask?

I First, we will look at the chat applicationwithout a framework, to get a feeling forwhat is needed.

I We will look at a sample request, namely towrite a new entry in the conversation.

I Then, we will identify what we need theframework to do.

I Third, we will look at the chat with aframework.

11 / 36

Page 44: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Exactly What is the Framework’sTask?

I First, we will look at the chat applicationwithout a framework, to get a feeling forwhat is needed.

I We will look at a sample request, namely towrite a new entry in the conversation.

I Then, we will identify what we need theframework to do.

I Third, we will look at the chat with aframework.

11 / 36

Page 45: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

New Entry, store-entry.php1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I The HTML form with the new entry is submitted tostore-entry.php

I Line 6 loads the Util class. Since the autoloader is not yetregistered, it is loaded manually.

I Line 7 calls the initRequest method, which performs taskssimilar for all requests.

12 / 36

Page 46: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

New Entry, store-entry.php1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I The HTML form with the new entry is submitted tostore-entry.php

I Line 6 loads the Util class. Since the autoloader is not yetregistered, it is loaded manually.

I Line 7 calls the initRequest method, which performs taskssimilar for all requests.

12 / 36

Page 47: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

New Entry, store-entry.php1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I The HTML form with the new entry is submitted tostore-entry.php

I Line 6 loads the Util class. Since the autoloader is not yetregistered, it is loaded manually.

I Line 7 calls the initRequest method, which performs taskssimilar for all requests.

12 / 36

Page 48: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Lines 9-13 sets $msg to the value of the HTTP parameter withthe new entry. If there is no such parameter, it is set to theempty string.

I Line 15 gets the controller of the current session. Rememberthat all state is lost after a request. We have to store thecontroller, with its references to the model, in the session.

13 / 36

Page 49: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Lines 9-13 sets $msg to the value of the HTTP parameter withthe new entry. If there is no such parameter, it is set to theempty string.

I Line 15 gets the controller of the current session. Rememberthat all state is lost after a request. We have to store thecontroller, with its references to the model, in the session.

13 / 36

Page 50: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Line 16 is the method call to the controller. This is where allrequest handling is done, the new entry is stored.

I Lines 17-18 calls the controller to get data that is needed in thenext view.

I Line 19 again stores the controller in the session, for use in thenext request.

14 / 36

Page 51: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Line 16 is the method call to the controller. This is where allrequest handling is done, the new entry is stored.

I Lines 17-18 calls the controller to get data that is needed in thenext view.

I Line 19 again stores the controller in the session, for use in thenext request. 14 / 36

Page 52: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Line 16 is the method call to the controller. This is where allrequest handling is done, the new entry is stored.

I Lines 17-18 calls the controller to get data that is needed in thenext view.

I Line 19 again stores the controller in the session, for use in thenext request. 14 / 36

Page 53: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

store-entry.php (Cont’d)1 namespace Chat\View;2 use \Chat\Util\Util;3 use \Chat\Model\Entry;4 use Chat\Controller\SessionManager;56 require_once ’classes/Chat/Util/Util.php’;7 Util::initRequest();89 if (empty($_POST[CHAT_MSG_KEY])) {

10 $msg = "";11 } else {12 $msg = $_POST[CHAT_MSG_KEY];13 }1415 $controller = SessionManager::getController();16 $controller->addEntry(new Entry($controller->getUsername(), $msg));17 $entries = $controller->getConversation();18 $username = $controller->getUsername();19 SessionManager::storeController($controller);2021 include CHAT_VIEWS . ’conversation.php’;

I Line 21 includes the file with the next view. Note that thevariables $entries and $username are available in thatfile.

15 / 36

Page 54: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Util.php1 public static function initRequest() {2 spl_autoload_register(function ($class) {3 require_once ’classes/’ .4 \str_replace(’\\’, ’/’, $class) .5 ’.php’;6 });78 session_start();9 self::defineConstants();

10 }

I Lines 2-6 registers the autoloader.I Line 8 starts a session if there is none.

I Line 9 creates constants for HTTP parameter keys:1 const SYMBOL_PREFIX = "CHAT_";2 private static function defineConstants() {3 self::defineConstant(’MSG_KEY’, ’msg’);4 self::defineConstant(’NICK_KEY’, ’nickName’);5 self::defineConstant(’TIMESTAMP_KEY’, ’timestamp’);6 self::defineConstant(’VIEWS’, ’resources/views/’);7 self::defineConstant(’FRAGMENTS’, ’resources/fragments/’);8 }9 private static function defineConstant($param, $value) {

10 define(self::SYMBOL_PREFIX . $param, $value);11 }

16 / 36

Page 55: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Util.php1 public static function initRequest() {2 spl_autoload_register(function ($class) {3 require_once ’classes/’ .4 \str_replace(’\\’, ’/’, $class) .5 ’.php’;6 });78 session_start();9 self::defineConstants();

10 }

I Lines 2-6 registers the autoloader.I Line 8 starts a session if there is none.I Line 9 creates constants for HTTP parameter keys:

1 const SYMBOL_PREFIX = "CHAT_";2 private static function defineConstants() {3 self::defineConstant(’MSG_KEY’, ’msg’);4 self::defineConstant(’NICK_KEY’, ’nickName’);5 self::defineConstant(’TIMESTAMP_KEY’, ’timestamp’);6 self::defineConstant(’VIEWS’, ’resources/views/’);7 self::defineConstant(’FRAGMENTS’, ’resources/fragments/’);8 }9 private static function defineConstant($param, $value) {

10 define(self::SYMBOL_PREFIX . $param, $value);11 }

16 / 36

Page 56: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Util.php1 public static function initRequest() {2 spl_autoload_register(function ($class) {3 require_once ’classes/’ .4 \str_replace(’\\’, ’/’, $class) .5 ’.php’;6 });78 session_start();9 self::defineConstants();

10 }

I Lines 2-6 registers the autoloader.I Line 8 starts a session if there is none.I Line 9 creates constants for HTTP parameter keys:

1 const SYMBOL_PREFIX = "CHAT_";2 private static function defineConstants() {3 self::defineConstant(’MSG_KEY’, ’msg’);4 self::defineConstant(’NICK_KEY’, ’nickName’);5 self::defineConstant(’TIMESTAMP_KEY’, ’timestamp’);6 self::defineConstant(’VIEWS’, ’resources/views/’);7 self::defineConstant(’FRAGMENTS’, ’resources/fragments/’);8 }9 private static function defineConstant($param, $value) {

10 define(self::SYMBOL_PREFIX . $param, $value);11 }

16 / 36

Page 57: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

SessionManager.php1 const CONTROLLER_KEY = ’controller’;23 public static function getController() {4 if (isset($_SESSION[self::CONTROLLER_KEY])) {5 return unserialize($_SESSION[self::CONTROLLER_KEY]);6 } else {7 return new Controller();8 }9 }

1011 public static function storeController(Controller $controller) {12 $_SESSION[self::CONTROLLER_KEY] = serialize($controller);13 }

I Line 4 checks if a Controller object isstored in the session.

I Line 5 reads the stored Controller.

I Line 7 creates a new Controller.I Line 12 stores the Controller in the

session.

17 / 36

Page 58: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

SessionManager.php1 const CONTROLLER_KEY = ’controller’;23 public static function getController() {4 if (isset($_SESSION[self::CONTROLLER_KEY])) {5 return unserialize($_SESSION[self::CONTROLLER_KEY]);6 } else {7 return new Controller();8 }9 }

1011 public static function storeController(Controller $controller) {12 $_SESSION[self::CONTROLLER_KEY] = serialize($controller);13 }

I Line 4 checks if a Controller object isstored in the session.

I Line 5 reads the stored Controller.I Line 7 creates a new Controller.

I Line 12 stores the Controller in thesession.

17 / 36

Page 59: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

SessionManager.php1 const CONTROLLER_KEY = ’controller’;23 public static function getController() {4 if (isset($_SESSION[self::CONTROLLER_KEY])) {5 return unserialize($_SESSION[self::CONTROLLER_KEY]);6 } else {7 return new Controller();8 }9 }

1011 public static function storeController(Controller $controller) {12 $_SESSION[self::CONTROLLER_KEY] = serialize($controller);13 }

I Line 4 checks if a Controller object isstored in the session.

I Line 5 reads the stored Controller.I Line 7 creates a new Controller.I Line 12 stores the Controller in the

session.17 / 36

Page 60: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

SessionManager.php1 const CONTROLLER_KEY = ’controller’;23 public static function getController() {4 if (isset($_SESSION[self::CONTROLLER_KEY])) {5 return unserialize($_SESSION[self::CONTROLLER_KEY]);6 } else {7 return new Controller();8 }9 }

1011 public static function storeController(Controller $controller) {12 $_SESSION[self::CONTROLLER_KEY] = serialize($controller);13 }

I Line 4 checks if a Controller object isstored in the session.

I Line 5 reads the stored Controller.I Line 7 creates a new Controller.I Line 12 stores the Controller in the

session.17 / 36

Page 61: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The view, conversation.phpI The view should consist of only HTML.

Unfortunately, this goal is not reached:I First, since there are header, footer and

navigation fragments that appear on eachpage, we have to include them to avoidduplicated code. These inclusions are PHPstatements, see lines 2 and 6 below.

1 ...2 <header class="section group">3 <?php include CHAT_FRAGMENTS . ’header.php’ ?>4 </header>56 <main class="section group">7 <nav class="section group">8 <?php include CHAT_FRAGMENTS . ’nav.php’ ?>9 </nav>

10 ...

18 / 36

Page 62: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The view, conversation.phpI The view should consist of only HTML.

Unfortunately, this goal is not reached:I First, since there are header, footer and

navigation fragments that appear on eachpage, we have to include them to avoidduplicated code. These inclusions are PHPstatements, see lines 2 and 6 below.

1 ...2 <header class="section group">3 <?php include CHAT_FRAGMENTS . ’header.php’ ?>4 </header>56 <main class="section group">7 <nav class="section group">8 <?php include CHAT_FRAGMENTS . ’nav.php’ ?>9 </nav>

10 ...

18 / 36

Page 63: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The view (Cont’d)I Second, to generate the conversation view from the$entries variable is also PHP code.

1 ...2 <div class="col span_4_of_4">3 <?php4 foreach ($entries as $entry) {5 if (!$entry->isDeleted()) {6 echo ("<p class=’author’>" . $entry->getNickName() . ":</p>");7 echo("<p class=’entry’>");8 echo(nl2br($entry->getMsg()));9 echo ("</p>");

10 if ($entry->getNickName() === $username) {11 echo("<form action=’delete-entry.php’>");12 echo("<input type=’hidden’ name=’timestamp’ value=’" .13 $entry->getTimestamp() . "’/>");14 echo("<input type=’submit’ value=’Delete’/>");15 echo("</form>");16 }17 }18 }19 ?>20 </div>21 ...

19 / 36

Page 64: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Other Layers, No Problem

I Now we have seen all view code related tocreating a new entry in the conversation.The view is normally the hardest part of aweb application.

I Controller and lower layers are plain PHPcode, created with normal object-orientedanalysis, design and programmingmethodologies.

20 / 36

Page 65: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Other Layers, No Problem

I Now we have seen all view code related tocreating a new entry in the conversation.The view is normally the hardest part of aweb application.

I Controller and lower layers are plain PHPcode, created with normal object-orientedanalysis, design and programmingmethodologies.

20 / 36

Page 66: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Question 1

21 / 36

Page 67: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Let’s Look for Infrastructure CodeI In store-entry, Util andSessionManager there is no code at allspecific for this application!

I One could argue that the call to thecontroller in store-entry.php isapplication specific.

I However, we are rid of also this line if theframework allows us to specify aURL-to-method mapping, which mostframeworks do.

I One could also argue that the names of theHTTP parameters are application specific.

I But, most frameworks enable specifying thoseas method parameters in the URL-to-method-mapping!

22 / 36

Page 68: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Let’s Look for Infrastructure CodeI In store-entry, Util andSessionManager there is no code at allspecific for this application!

I One could argue that the call to thecontroller in store-entry.php isapplication specific.

I However, we are rid of also this line if theframework allows us to specify aURL-to-method mapping, which mostframeworks do.

I One could also argue that the names of theHTTP parameters are application specific.

I But, most frameworks enable specifying thoseas method parameters in the URL-to-method-mapping!

22 / 36

Page 69: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Let’s Look for Infrastructure CodeI In store-entry, Util andSessionManager there is no code at allspecific for this application!

I One could argue that the call to thecontroller in store-entry.php isapplication specific.

I However, we are rid of also this line if theframework allows us to specify aURL-to-method mapping, which mostframeworks do.

I One could also argue that the names of theHTTP parameters are application specific.

I But, most frameworks enable specifying thoseas method parameters in the URL-to-method-mapping!

22 / 36

Page 70: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Let’s Look for Infrastructure CodeI In store-entry, Util andSessionManager there is no code at allspecific for this application!

I One could argue that the call to thecontroller in store-entry.php isapplication specific.

I However, we are rid of also this line if theframework allows us to specify aURL-to-method mapping, which mostframeworks do.

I One could also argue that the names of theHTTP parameters are application specific.

I But, most frameworks enable specifying thoseas method parameters in the URL-to-method-mapping!

22 / 36

Page 71: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Let’s Look for Infrastructure CodeI In store-entry, Util andSessionManager there is no code at allspecific for this application!

I One could argue that the call to thecontroller in store-entry.php isapplication specific.

I However, we are rid of also this line if theframework allows us to specify aURL-to-method mapping, which mostframeworks do.

I One could also argue that the names of theHTTP parameters are application specific.

I But, most frameworks enable specifying thoseas method parameters in the URL-to-method-mapping!

22 / 36

Page 72: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.

I Routing, which means to map a URL to aspecified method in a specified class.

I HTTP parameters, it should be possible tospecify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 73: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.I Routing, which means to map a URL to a

specified method in a specified class.

I HTTP parameters, it should be possible tospecify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 74: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.I Routing, which means to map a URL to a

specified method in a specified class.I HTTP parameters, it should be possible to

specify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 75: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.I Routing, which means to map a URL to a

specified method in a specified class.I HTTP parameters, it should be possible to

specify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 76: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.I Routing, which means to map a URL to a

specified method in a specified class.I HTTP parameters, it should be possible to

specify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 77: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasksI Therefore, the framework must handle:

I Class loading, i.e., include PHP class files.I Routing, which means to map a URL to a

specified method in a specified class.I HTTP parameters, it should be possible to

specify how parameters are passed asarguments to the methods specified by therouting rules.

I HTTP sessions, all objects in controller andlower layers should be stored in the$_SESSION superglobal.

I Templating, to generate a view from data, weneed something to replace the PHP codelooping through the $conversationvariable.

23 / 36

Page 78: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasks, Cont’dI The framework must handle:

I Composite views, there should be amechanism to specify fragments (header,footer etc) for inclusion without having to mixHTML and PHP.

I Not only should it be possible to reuse thefragments, also the page layout should bereused. This means only the content of themain area should be specific for a page.

I There are many other requirements thatshould be managed by a framework, butwhich we have skipped in this smallexample.

24 / 36

Page 79: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasks, Cont’dI The framework must handle:

I Composite views, there should be amechanism to specify fragments (header,footer etc) for inclusion without having to mixHTML and PHP.

I Not only should it be possible to reuse thefragments, also the page layout should bereused. This means only the content of themain area should be specific for a page.

I There are many other requirements thatshould be managed by a framework, butwhich we have skipped in this smallexample.

24 / 36

Page 80: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasks, Cont’dI The framework must handle:

I Composite views, there should be amechanism to specify fragments (header,footer etc) for inclusion without having to mixHTML and PHP.

I Not only should it be possible to reuse thefragments, also the page layout should bereused. This means only the content of themain area should be specific for a page.

I There are many other requirements thatshould be managed by a framework, butwhich we have skipped in this smallexample.

24 / 36

Page 81: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The Framework’s tasks, Cont’dI The framework must handle:

I Composite views, there should be amechanism to specify fragments (header,footer etc) for inclusion without having to mixHTML and PHP.

I Not only should it be possible to reuse thefragments, also the page layout should bereused. This means only the content of themain area should be specific for a page.

I There are many other requirements thatshould be managed by a framework, butwhich we have skipped in this smallexample.

24 / 36

Page 82: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Section

MVC in a PHP Web Application

The id1354-fw Framework

25 / 36

Page 83: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

PHP Frameworks

I There are many PHP frameworks, of different sizeand quality.

I Some interesting and often used frameworks areZend, Symfony, Yii, Laravel and Phalcon.

I Here, we will have a look at a framework writtenspecifically for this course, the id1354-fw framework.

26 / 36

Page 84: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

PHP Frameworks

I There are many PHP frameworks, of different sizeand quality.

I Some interesting and often used frameworks areZend, Symfony, Yii, Laravel and Phalcon.

I Here, we will have a look at a framework writtenspecifically for this course, the id1354-fw framework.

26 / 36

Page 85: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

PHP Frameworks

I There are many PHP frameworks, of different sizeand quality.

I Some interesting and often used frameworks areZend, Symfony, Yii, Laravel and Phalcon.

I Here, we will have a look at a framework writtenspecifically for this course, the id1354-fw framework.

26 / 36

Page 86: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The id1354-fw FrameworkI But frameworks should be reused?? Why write a

new one?I The most common frameworks are too complicated

for this course. Smaller frameworks are oftenunstable, lack documentation, and solve wrongproblems.

I The id1354-fw framework is very small, but still hasexactly the features we are looking for (excepttemplating and composite views) and nothing more.It will also be supported as long as it is used in thecourse.

I Now, we will look at the id1354-fw framework andhow it changes the Chat application.

I The full documentation, including installationinstructions, is included in the id1354-fw.zipfile available at the course web.

27 / 36

Page 87: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The id1354-fw FrameworkI But frameworks should be reused?? Why write a

new one?I The most common frameworks are too complicated

for this course. Smaller frameworks are oftenunstable, lack documentation, and solve wrongproblems.

I The id1354-fw framework is very small, but still hasexactly the features we are looking for (excepttemplating and composite views) and nothing more.It will also be supported as long as it is used in thecourse.

I Now, we will look at the id1354-fw framework andhow it changes the Chat application.

I The full documentation, including installationinstructions, is included in the id1354-fw.zipfile available at the course web.

27 / 36

Page 88: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The id1354-fw FrameworkI But frameworks should be reused?? Why write a

new one?I The most common frameworks are too complicated

for this course. Smaller frameworks are oftenunstable, lack documentation, and solve wrongproblems.

I The id1354-fw framework is very small, but still hasexactly the features we are looking for (excepttemplating and composite views) and nothing more.It will also be supported as long as it is used in thecourse.

I Now, we will look at the id1354-fw framework andhow it changes the Chat application.

I The full documentation, including installationinstructions, is included in the id1354-fw.zipfile available at the course web.

27 / 36

Page 89: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The id1354-fw FrameworkI But frameworks should be reused?? Why write a

new one?I The most common frameworks are too complicated

for this course. Smaller frameworks are oftenunstable, lack documentation, and solve wrongproblems.

I The id1354-fw framework is very small, but still hasexactly the features we are looking for (excepttemplating and composite views) and nothing more.It will also be supported as long as it is used in thecourse.

I Now, we will look at the id1354-fw framework andhow it changes the Chat application.

I The full documentation, including installationinstructions, is included in the id1354-fw.zipfile available at the course web.

27 / 36

Page 90: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

The id1354-fw FrameworkI But frameworks should be reused?? Why write a

new one?I The most common frameworks are too complicated

for this course. Smaller frameworks are oftenunstable, lack documentation, and solve wrongproblems.

I The id1354-fw framework is very small, but still hasexactly the features we are looking for (excepttemplating and composite views) and nothing more.It will also be supported as long as it is used in thecourse.

I Now, we will look at the id1354-fw framework andhow it changes the Chat application.

I The full documentation, including installationinstructions, is included in the id1354-fw.zipfile available at the course web.

27 / 36

Page 91: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class LoadingI You do not have to include or require

any classes, they are loaded by theframework.

I Place all your classes under the classesdirectory that is created when theframework is installed.

I Use a directory structure matching thenamespaces and name each file after theclass in the file.

I For example, the class MyClass in thenamespace \MyApp\Model shall be in thefileclasses/MyApp/Model/MyClass.php.

28 / 36

Page 92: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class LoadingI You do not have to include or require

any classes, they are loaded by theframework.

I Place all your classes under the classesdirectory that is created when theframework is installed.

I Use a directory structure matching thenamespaces and name each file after theclass in the file.

I For example, the class MyClass in thenamespace \MyApp\Model shall be in thefileclasses/MyApp/Model/MyClass.php.

28 / 36

Page 93: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class LoadingI You do not have to include or require

any classes, they are loaded by theframework.

I Place all your classes under the classesdirectory that is created when theframework is installed.

I Use a directory structure matching thenamespaces and name each file after theclass in the file.

I For example, the class MyClass in thenamespace \MyApp\Model shall be in thefileclasses/MyApp/Model/MyClass.php.

28 / 36

Page 94: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Class LoadingI You do not have to include or require

any classes, they are loaded by theframework.

I Place all your classes under the classesdirectory that is created when theframework is installed.

I Use a directory structure matching thenamespaces and name each file after theclass in the file.

I For example, the class MyClass in thenamespace \MyApp\Model shall be in thefileclasses/MyApp/Model/MyClass.php.

28 / 36

Page 95: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Routing

I To create a class that handles a HTTPrequest, write a class that extends\Id1354fw\View\AbstractRequestHandler.

I This class shall have the methodprotected function doExecute(),

which performs all work needed to handlethe http request.

I If this class is called\MyApp\View\Something,the doExecute method is called when theuser requests the urlhttp://<yourserver>/<yourwebapp>/Myapp/View/Something.

29 / 36

Page 96: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Routing

I To create a class that handles a HTTPrequest, write a class that extends\Id1354fw\View\AbstractRequestHandler.

I This class shall have the methodprotected function doExecute(),

which performs all work needed to handlethe http request.

I If this class is called\MyApp\View\Something,the doExecute method is called when theuser requests the urlhttp://<yourserver>/<yourwebapp>/Myapp/View/Something.

29 / 36

Page 97: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Routing

I To create a class that handles a HTTPrequest, write a class that extends\Id1354fw\View\AbstractRequestHandler.

I This class shall have the methodprotected function doExecute(),

which performs all work needed to handlethe http request.

I If this class is called\MyApp\View\Something,the doExecute method is called when theuser requests the urlhttp://<yourserver>/<yourwebapp>/Myapp/View/Something.

29 / 36

Page 98: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

HTTP Parameters

I The HTTP request handling class musthave a set method for each http post andget parameter.

I If the parameter is called myParam, theset method must bepublic function setMyParam($value).

I This function will be called with the value ofthe http parameter before the doExecutemethod is called.

30 / 36

Page 99: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

HTTP Parameters

I The HTTP request handling class musthave a set method for each http post andget parameter.

I If the parameter is called myParam, theset method must bepublic function setMyParam($value).

I This function will be called with the value ofthe http parameter before the doExecutemethod is called.

30 / 36

Page 100: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

HTTP Parameters

I The HTTP request handling class musthave a set method for each http post andget parameter.

I If the parameter is called myParam, theset method must bepublic function setMyParam($value).

I This function will be called with the value ofthe http parameter before the doExecutemethod is called.

30 / 36

Page 101: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Question 2

31 / 36

Page 102: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Sessions

I The request handler contains the object$this->session, which has thefollowing session handling methods.

I restart, starts a new session if there isnone. Changes session id if there is already asession.

I invalidate, stops the session, discards allsession data, unsets the session id anddestroys the session cookie.

I set ,stores a key/value pair in the session.I get, reads a value stored in the session.

32 / 36

Page 103: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Sessions

I The request handler contains the object$this->session, which has thefollowing session handling methods.

I restart, starts a new session if there isnone. Changes session id if there is already asession.

I invalidate, stops the session, discards allsession data, unsets the session id anddestroys the session cookie.

I set ,stores a key/value pair in the session.I get, reads a value stored in the session.

32 / 36

Page 104: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Sessions

I The request handler contains the object$this->session, which has thefollowing session handling methods.

I restart, starts a new session if there isnone. Changes session id if there is already asession.

I invalidate, stops the session, discards allsession data, unsets the session id anddestroys the session cookie.

I set ,stores a key/value pair in the session.

I get, reads a value stored in the session.

32 / 36

Page 105: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Sessions

I The request handler contains the object$this->session, which has thefollowing session handling methods.

I restart, starts a new session if there isnone. Changes session id if there is already asession.

I invalidate, stops the session, discards allsession data, unsets the session id anddestroys the session cookie.

I set ,stores a key/value pair in the session.I get, reads a value stored in the session.

32 / 36

Page 106: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Sessions

I The request handler contains the object$this->session, which has thefollowing session handling methods.

I restart, starts a new session if there isnone. Changes session id if there is already asession.

I invalidate, stops the session, discards allsession data, unsets the session id anddestroys the session cookie.

I set ,stores a key/value pair in the session.I get, reads a value stored in the session.

32 / 36

Page 107: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View Handling

I To make available data in the next view, callthe methodaddVariable($name, $value)in the doExecute method.

I This will make the parameter $valueavailable in the next view, in a variablecalled $name.

I The doExecute method shall return thepath to the file with the next view. views/is prepended to the returned path and.php is appended to the path.

33 / 36

Page 108: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View Handling

I To make available data in the next view, callthe methodaddVariable($name, $value)in the doExecute method.

I This will make the parameter $valueavailable in the next view, in a variablecalled $name.

I The doExecute method shall return thepath to the file with the next view. views/is prepended to the returned path and.php is appended to the path.

33 / 36

Page 109: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

View Handling

I To make available data in the next view, callthe methodaddVariable($name, $value)in the doExecute method.

I This will make the parameter $valueavailable in the next view, in a variablecalled $name.

I The doExecute method shall return thepath to the file with the next view. views/is prepended to the returned path and.php is appended to the path.

33 / 36

Page 110: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Question 3

34 / 36

Page 111: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Composite Views and Templates

I Unfortunately, composite views andtemplates are not handled by the id1354-fwframework.

I Therefore, we still have to mix PHP in theHTML code to include data and fragmentsin the view.

35 / 36

Page 112: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Composite Views and Templates

I Unfortunately, composite views andtemplates are not handled by the id1354-fwframework.

I Therefore, we still have to mix PHP in theHTML code to include data and fragmentsin the view.

35 / 36

Page 113: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Mission Completed (Almost)

I Now compare the chat application with andwithout the framework. With the framework,there is no infrastructure code!!

I Adding more functionality involves only newimplementations ofAbstractRequestHandler, andordinary object-oriented code in controllerand lower layers.

I All this is application specific!I But there is still PHP in the HTML code...

36 / 36

Page 114: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Mission Completed (Almost)

I Now compare the chat application with andwithout the framework. With the framework,there is no infrastructure code!!

I Adding more functionality involves only newimplementations ofAbstractRequestHandler, andordinary object-oriented code in controllerand lower layers.

I All this is application specific!

I But there is still PHP in the HTML code...

36 / 36

Page 115: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Mission Completed (Almost)

I Now compare the chat application with andwithout the framework. With the framework,there is no infrastructure code!!

I Adding more functionality involves only newimplementations ofAbstractRequestHandler, andordinary object-oriented code in controllerand lower layers.

I All this is application specific!I But there is still PHP in the HTML code...

36 / 36

Page 116: MVC And Frameworks in a PHP Web Application - Internet ... · PDF fileArchitecture MVC in a PHP Web Application The id1354-fw MVC And Frameworks in a Framework PHP Web Application

Architecture

MVC in a PHP WebApplication

The id1354-fwFramework

Mission Completed (Almost)

I Now compare the chat application with andwithout the framework. With the framework,there is no infrastructure code!!

I Adding more functionality involves only newimplementations ofAbstractRequestHandler, andordinary object-oriented code in controllerand lower layers.

I All this is application specific!I But there is still PHP in the HTML code...

36 / 36


Recommended