Introduction to Yii & performance comparison with Drupal

Post on 22-Nov-2014

3099 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

This is simple introduction to yii & how to install it on WAMP. Plus some performance comparison with Drupal.

Transcript

By Shahzad Malik (cadet018@gmail.com)

yii?

IS it fast? ...

IS it secure? ...

IS it professional? ...

IS it right for my next project?

Yes It Is!

Topics

• Introduction to Yii– Workflow (MVC)– Installation Steps

• Features• Some Code Samples

– Model– Using Model from Controller– Controller– View

Topics

• Performance

Introduction

Introduction

Yii is a free, open-source Web application development framework written in PHP5 that promotes clean, DRY design and encourages rapid development. It works to streamline your application development and helps to ensure an extremely efficient, extensible, and maintainable end product.Source: http://www.yiiframework.com/about/

Introduction – Workflow (MVC)

Introduction - Installation

5STEPS

Introduction - Installation

STEP 1

http://www.yiiframework.com/download

Introduction - Installation

STEP 2

Extract framework folder to any directory with access rights

Introduction - Installation

STEP 3Extract requirements folder to a web-accessible directory http://www.example.com/requirements

Requirements

Introduction - Installation

STEP 4

Open console (Command Prompt) and run following command from web-accessible directory/path/to/php.exe /path/to/framework/yiic.php webapp myfirstyiiapp

Introduction - Installation

STEP 5 That’s it

Introduction – Installation - Summary

Extract framework folderSTEP 2

Check requirementsSTEP 3

Run install command from consoleSTEP 4

DownloadSTEP 1

Introduction – Installation - Preview

Features

Features

Features

• Skinning and themingYou can select theme at project level, controller level, action level Or based on some condition in action.

• Error handling and logging Errors are handled and presented more nicely, and log messages can be categorized, filtered and routed to different destinations.

Features

• Automatic code generationYii provides a set of spontaneous and highly extensible code generation tools that can help you quickly generate the code you need for features such as form input, CRUD.

• Unit and functionality testingTest-Driven Development - using PHPUnit and Selenium Remote Control

Features

• Authentication and authorizationYii has built-in authentication support. It also supports authorization via hierarchical role-based access control.

• Layered caching schemeYii supports data caching, page caching, fragment caching and dynamic content. The storage medium of caching can be changed easily without touching the application code.

Features - Extensions

Auth (42)Caching (22)Console (17)Database (100)Date and Time (24)Error Handling (4)File System (29)Logging (26)Mail (16)Networking (21)Security (15)User Interface (475)Validation (65)Web Service (77)Others (289)

Some code samples

Modelclass Post extends CActiveRecord{ /** * Retrieves a list of models based on the current search/filter conditions. * @return CActiveDataProvider the data provider that can return the models based on the search/filter conditions. */ public function search() { $criteria=new CDbCriteria;

$criteria->compare('content ',$this->content ); $criteria->compare('title ',$this->title ,true); return new CActiveDataProvider($this, array( 'criteria'=>$criteria, )); }}

Model From Controller

Create$post = new Post;$post->title = 'sample post';$post->content = 'post body content';$post->save(); <- This is validated

Select$post=Post::model()->find(array( 'select'=>'title', 'condition'=>'postID=:postID', 'params'=>array(':postID'=>2),));

Update$post = Post::model()->findByPk(2);$post->title = ‘New title’;$post->save(); <- This is validated

Controllerclass PostController extends Controller { /** * Displays a particular model. * @param integer $id the ID of the model to be displayed */ public function actionView($id) { $post = Post::model()->findByPk($id); if(!$post) throw new CHttpException(404); $this->render('view', array( 'post' => $post, )); }}

View$this->breadcrumbs=array(     'Posts'=>array('index'),      $post>title, ); ?>

<h1>View Post #<?php echo $post>id; ?></h1>

<?php $this->widget('zii.widgets.CDetailView', array(     'data'=>$post,     'attributes'=>array(         'title', 'content',     ), )); ?>

Performance

Performance

Performance – Lazy loading example

/**     * @return array relational rules.     */    public function relations()    {      return array(            'userRole' => array(self::BELONGS_TO, 'TblRole', 'user_role_id'),        );    }TblU

ser M

odal

Sche

ma

Performance – Lazy loading example

<table>    <tr><th>User id</th><td><?php echo $user->id; ?></td></tr>    <tr><th>User name</th><td><?php echo $user->username; ?></td></tr>    <tr><th>Role</th><td><?php echo $user->user_role_id; ?></td></tr></table>

Performance – Lazy loading example

<table>    <tr><th>User id</th><td><?php echo $user->id; ?></td></tr>    <tr><th>User name</th><td><?php echo $user->username; ?></td></tr>     <tr><th>Role</th><td><?php echo $user->userRole->role_name; ?></td></tr></table>

Performance – Drupal & Yii

Performance – Drupal & Yii

Performance – Drupal & Yii

top related