Musa Talukdar Software Engineer 9 th feb,2012
Oct 15, 2014
Musa TalukdarSoftware Engineer
9th feb,2012
About Yii
• free, open-source Web application development framework written in PHP5
• brainchild of its founder, Qiang Xue• You have full control over the configuration
from head-to-toe• Fast, secure, professional
Credits• Prado: Yii adopts its component-based and event-driven
programming paradigm, database abstraction layers, modular application architecture, internationalization and localization, and many of its other features and patterns.
• Ruby on Rails: Yii referenced its implementation of the active record design pattern for its ORM layer.
• jQuery: This is integrated in Yii as the foundational JavaScript framework.
• Symfony: Yii referenced its filter design and plug-in architecture.
• Joomla: Yii referenced its modular design and message translation scheme.
Features
• MVC• Database Access Object• Form validation• Authentication and authorization• Skinning and theming• Web service• i18N and L10n• Layered cashing scheme…
…Features
• Error handling and logging• Security• Unit and functional testing• Automatic code generation• Friendly with third-party code• Detailed documentation• Extension library
MVC
Database Access Objects (DAO), Query Builder, Active Record, DB Migration
• Data Access Object(DAO) Build on top of PHP Data Object enables accessing to different database
management systems (DBMS) in a single uniform interface.
easily switched to use a different DBMS without the need to modify the data accessing code
Database Access Objects (DAO), Query Builder, Active Record, DB Migration
• Yii Query Builder object-oriented method for building queries helps reduce risk of SQL injection attacks
• Yii Active Record(AR) implemented as a widely adopted Object-
Relational Mapping (ORM) approachRepresenting a table in terms of a class and a row
an instanceeliminates the repetitive task of writing those SQL
statements that mainly deal with CRUD (create, read, update and delete) operations.
…example of an AR insert
CREATE TABLE tbl_post (
id INTEGER NOT NULL PRIMARY KEY
AUTOINCREMENT,
title VARCHAR(128) NOT NULL,
content TEXT NOT NULL,
create_time INTEGER NOT NULL );
$post=new Post;
$post->title='sample post';
$post->content='post body content';
$post->save();
Form input and validation
• form helper to create form using php• Form validation using ajax• display appropriate error messages for invalid
input
Authentication and authorization
• built-in authentication support• authorization via hierarchical role-based
access control (RBAC).
Skinning and theming
• Yii implements a skinning and theming mechanism that allows you to quickly switch the outlook of a Yii-power website.
• While using a theme we can quickly change the outlook of views, we can use skins to systematically customize the outlook of the widgets used in the views.
Internationalization (I18N) and localization (L10N)
• locale data for each possible language and variant.
• message and file translation service• locale-dependent date and time formatting.• locale-dependent number formatting.
Layered caching scheme
• Yii supports Data caching Query CachingPage cachingFragment caching Dynamic content caching
• The storage medium of caching can be changed easily without touching the application code.
Layered caching scheme
CMemCache: uses PHP memcache extension.CApcCache: uses PHP APC extension.CXCache: uses PHP XCache extension.CEAcceleratorCache : uses PHP EAccelerator extension .CDbCache: uses a database table to store cached data. By default, it
will create and use a SQLite3 database under the runtime directory. You can explicitly specify a database for it to use by setting its connectionID property.
CZendDataCache: uses Zend DataCache as the underlying caching medium.
CFileCache : uses files to store cached data. This is particular suitable to cache large chunk of data (such as pages).
Security
• Cross-site Scripting Prevention using HTML Purifire
• Cross-site Request Forgery PreventionCHtml::form method will embed the necessary random
value in a hidden field so that it can be submitted for CSRF validation
• Cookie Attack Prevention Yii implements a cookie validation scheme that prevents
cookies from being modified.
Testing
• unit and functional testing• The testing supported provided by Yii requires
PHPUnit and Selenium Remote Control• The most basic unit is function• Functional test on module• Create the required file structure for testing
Automatic code generation
• Yii provides a set of intuitive and highly extensible code generation tools that can help you quickly generate the code you need for features such as form input, CRUD.
And many more…
• Module• Component• Web service• Extension library
let's get our hands dirty
…let's get our hands dirty
1. Install Yii2. Create database3. Generate model and CRUD4. Customize your code …done
Refercnce
• http://www.yiiframework.com/• http://en.wikipedia.org/wiki/Yii• http://www.phpframeworks.com• Yii 1.1 Application Development Cookbook