php + framework + mvc cakephp lectures 1. what is framework? cakephp lectures 2

Post on 31-Dec-2015

239 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PHP+

Framework+

MVC CakePHP Lectures 1

What is

Framework?

CakePHP Lectures 2

Common code - Generic functionality

Extensible - Specific functionality

Unlike library – Flow Dictated by Framework

CakePHP Lectures 3

Reusable Design- May include:

Support programs

Code libraries

Tools to develop and glue different components

CakePHP Lectures 4

Whya

Framework?

CakePHP Lectures 5

I am lazy enough to write

long codes,NAAAH...

CakePHP Lectures 6

Technical Aspects:

Proven Architecture

Efficient (Code Re-usability)

Scalable

Extensible

Modularity

CakePHP Lectures 7

Developer Aspects:

Easier maintenance

Shorter development times.

Flexible and less error-prone

CakePHP Lectures 8

Focus => Specialized Functionality

NOT

ArchitectureCommon Tools

Work Flow

CakePHP Lectures 9

How to choose

Framework?

CakePHP Lectures 10

CakePHP Lectures 11

Ofcourse, NOT

CakePHP Lectures 12

Technical Aspects:

Types of application, Types of framework

Technical features of the framework

Ease of development

Ease of testing

Tool support

CakePHP Lectures 13

Viability Aspects:

Frequent release

Future enhancement

Maturity – real life usage cases

Proven market place?

Production Environments?

CakePHP Lectures 14

So, which one?

CakePHP Lectures 15

The one which answers most of the above questions.

CakePHP Lectures 16

PHP+

Framework+

MVC

CakePHPCakePHP Lectures 17

Free Open Source

Rapid Application Development

Active Community

Compatibility with PHP4 and PHP5

Project Age - 5yrs

CakePHP Lectures 18

MVC

Scaffolding

Validation

Data Sanitation

ACL

Components

Helpers

Security

Session

Caching

CakePHP Lectures 19

Easy Installation – 2 Mins

Easy Debugging

Integrated Unit Testing

CakePHP Lectures 20

Setting Up Cake:

Setup Database Configuration

CakePHP supports database drivers:

• mysql• postgres• sqlite• pear-drivername (e.g. pear-mysql)• adodb-drivername

CakePHP Lectures 21

Cake Folder Structure

CakePHP Lectures 22

• app/• config/• controllers/• models/• plugins/• tmp/• vendors/• views/• webroot/

• cake/• config/• docs/• libs/

• vendors/

CakePHP Lectures 23

Folder What it Contains

configHolds the (few) configuration files CakePHP uses. Database connection details, bootstrapping, core configuration files and more should be stored here.

controllers Contains your application’s controllers and their components.

locale Stores string files for internationalization.

models Contains your application’s models, behaviors, and datasources.

plugins Contains plugin packages.

tmp

This is where CakePHP stores temporary data. The actual data it stores depends on how you have CakePHP configured, but this folder is usually used to store model descriptions, logs, and sometimes session information.Make sure that this folder exists and that it is writable, otherwise the performance of your application will be severely impacted. In debug mode, CakePHP will warn you if it is not the case.

vendors

Any third-party classes or libraries should be placed here. Doing so makes them easy to access using the App::import('vendor', 'name') function. Keen observers will note that this seems redundant, as there is also a vendors folder at the top level of our directory structure. We'll get into the differences between the two when we discuss managing multiple applications and more complex system setups.

views Presentational files are placed here: elements, error pages, helpers, layouts, and view files.

webrootIn a production setup, this folder should serve as the document root for your application. Folders here also serve as holding places for CSS stylesheets, images, and JavaScript files.

• The app folder will be where you work your magic: it’s where your application’s files will be placed.

• The cake folder is where we’ve worked our magic. Make a personal commitment not to edit files in this folder. We can’t help you if you’ve modified the core.

• Finally, the vendors folder is where you’ll place third-party PHP libraries you need to use with your CakePHP applications.

CakePHP Lectures 24

Models:

• Access point to a certain table in the database

• Contain data validation rules, associationinformation, and methods specific to the table

• Extends AppModel

CakePHP Lectures 25

Models:

• Table name in plural, like "users" and models in singular “user”.

• Mandatory Primary key named 'id'.

• Foreign keys naming: 'article_id'. (singular-table-name_id).

• 'created' / 'modified' column are automatically populated.

CakePHP Lectures 26

Controllers:

• Manage the logic for a certain section or a single model.

• Include any number of actions

• Actions are functions used in your web application to display views

• Extends AppController

CakePHP Lectures 27

class VideosController extends AppController{

function view($id){//action logic goes here..}function rent($customer_id, $video_id){//action logic goes here..}function search($query){//action logic goes here..}

}

example URLs:http://www.example.com/videos/view/253http://www.example.com/videos/rent/5124/0-2352

CakePHP Lectures 28

Controller action as a webservice

• Set WEBSERVICES in /app/config/core.php to 'on'

• Structure the logic in controller just as you normally would

CakePHP Lectures 29

Views:

a page template, usually named after an action.

view for PostsController::add() would be found at /app/views/posts/add.ctp.

simply PHP files, so you can use any PHP code inside them

CakePHP Lectures 30

Views:

data is passed as an array called $data

data handed to the view using set() in the controller is also available in view.

HTML helper is available in every view by default

layout contains presentational code that wraps around view. Usually, common for one controller.

CakePHP Lectures 31

Scaffolding:

• Way of getting the early parts of developing a web application started.

• Analyze database tables and creates standard lists, add, delete, edit.

• Add scaffolding by adding the $scaffold variable to controller.

CakePHP Lectures 32

Components:

Components are used to aid controllers in specific situations.A Reusable code which seamlessly sits inside Controller

Sample Component Classclass FooComponent extends Object{var $someVar = null;var $controller = true;function startup(&$controller){// Perform controller initialization here.}function doFoo(){$this->someVar = 'foo';}}

CakePHP Lectures 33

add the following code in your controller's definition:

var $components = array('Foo');

Inside of that controller you could now use:

$this->Foo->doFoo();

CakePHP Lectures 34

Helpers:

Common functions to format views.Quick-and-easy creation of web forms

image($path, $htmlAttributes, $return = false);Renders an image tag.

tableHeaders($names, $tr_options,

$th_options);create a formatted table header.

CakePHP Lectures 35

Other Helpers:

AJAX

Javascript

Number

Text

Time

Cache

(You can create your own helper.)CakePHP Lectures 36

Data Validation:

Data in a Model conforms to the business rules.

Example /app/models/user.php

<?phpclass User extends AppModel{

var $name = 'User';var $validate = array('login' => '/[a-z0-9\_\-]{3,}$/i',

'password' => VALID_NOT_EMPTY,'email' => VALID_EMAIL,'born' => VALID_NUMBER

);}?> CakePHP Lectures 37

Plugins:

Distribute combination of controllers, models, and views as package.

Example: Pizza Ordering Filesystem Layout

/app/plugins/pizza/controllers <- plugin controllers gohere/models <- plugin models go here/views <- plugin views go here/pizza_app_controller.php <- plugin's AppController,named after the plugin/pizza_app_model.php <- plugin's AppModel, named after the plugin CakePHP Lectures 38

ACL:

Access Request Objects (AROs) andAccess Control Objects (ACOs)

$aro = new Aro();

// Create ARO$aro->create( 1, null, 'Bob Marley' );

// Create Groups$aro->create(0, null, 'Artists');

//Hook ARO with Group$aro->setParent('Artists', 'Bob Marley');

CakePHP Lectures 39

Creating ACOs and assigning permissions

$aco = new Aco();

//Create some access control objects:$aco->create(1, null, 'Electric Guitar');

$this->Acl->allow('Abraham Lincoln', 'Electric Guitar','read');

CakePHP Lectures 40

// Check Access

$access =$this->Acl->check($this->Session-> read('user_alias'), $aco, $action = "*");

//access deniedif ($access === false){

echo "access denied";exit;

}

CakePHP Lectures 41

Data Sanitation:

Makes User Given Data Safe for use in SQL andHTML

// First, include library and instantiate:uses('sanitize');$mrClean = new Sanitize();

$badString = ";:<script><html>< // >@@#";echo $mrClean->paranoid($badString);// output: scripthtml

echo $mrClean->paranoid($badString, array(' ', '@'));// output: scripthtml @@

CakePHP Lectures 42

Sessions:

Here are some of the functions you'll use most:

check ($name);del ($name);delete ($name);Error ();flash ($key = 'flash');read ($name);renew ();;

CakePHP Lectures 43

Security:

RequirePost()

class ThingsController extends AppController{var $components = array('Security');function beforeFilter(){$this->Security->requirePost('delete');}function delete($id){// This will only happen if the action is called via an HTTP POST request$this->Thing->del($id);}}

CakePHP Lectures 44

5 Mins Blog Tutorial

with Unit Testing

CakePHP Lectures 45

top related