The document provides an overview of the Yii web application framework and Folio3, a company that specializes in developing applications using Yii. It discusses Folio3's services, Yii's features like caching, authentication and code generation. It also provides examples of using models, controllers and views in Yii applications and compares Yii's performance to other frameworks like Drupal.
2. Agenda
Folio3 – Company Overview
Introduction to Yii
Workflow (MVC)
Installation Steps
Features
Some Code Samples
Model
Using Model from Controller
Controller
View
Performance
4. Folio3 At a Glance
Founded in 2005
Over 200 full time employees
Offices in the US, Canada, Bulgaria & Pakistan
Palo Alto, CA.
Sofia, Bulgaria
Karachi, Pakistan
Toronto, Canada
5. What We Do
We are a Development Partner for our customers
Design software solutions, not just implement them
Focus on the solution – Platform and technology agnostic
Expertise in building applications that are:
Mobile Social Cloud-based Gamified
6. What We Do
Areas of Focus
Enterprise
Custom enterprise applications
Product development targeting the enterprise
Mobile
Custom mobile apps for iOS, Android, Windows Phone, BB OS
Mobile platform (server-to-server) development
Social Media
CMS based websites for consumers and enterprise (corporate, consumer,
community & social networking)
Social media platform development (enterprise & consumer)
Gaming
Social & casual cross platform games (mobile, web, console)
Virtual Worlds
7. Areas of Focus: Enterprise
Automating workflows
Cloud based solutions
Application integration
Platform development
Healthcare
Mobile Enterprise
Digital Media
Supply Chain
8. Areas of Focus: Mobile
Serious enterprise applications
for Banks, Businesses
Fun consumer apps for app
discovery, interaction, exercise
gamification and play
Educational apps
Augmented Reality apps
Mobile Platforms
9. Areas of Focus: Web & Social Media
Community Sites based on
Content Management
Systems
Enterprise Social
Networking
Social Games for Facebook
& Mobile
Companion Apps for games
10. Why Yii?
ISit fast? ...
ISit secure? ...
ISit professional? ...
ISit right for my next project?
13. 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/
20. Introduction - Installation
Open console (Command Prompt) and run the following
command from a web-accessible directory
/path/to/php.exe /path/to/framework/yiic.php webapp
myfirstyiiapp
26. Features
Skinning and theming
You 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.
27. Features
Automatic code generation
Yii 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 testing
Test-Driven Development - using PHPUnit and Selenium
Remote Control
28. Features
Authentication and authorization
Yii has built-in authentication support. It also supports
authorization via hierarchical role-based access control.
Layered caching scheme
Yii supports data caching, page caching, fragment caching
and dynamic content. The storage medium of caching can
be changed easily without touching the application code.
29. Features – Extensions
Auth (59)
Caching (25)
Console (25)
Database (133)
Date and Time (31)
Error Handling (6)
File System (39)
Logging (37)
Mail (29)
Networking (25)
Security (20)
User Interface (606)
Validation (82)
Web Service (104)
Others (385)
31. Model Class
class 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,
));
}
}
32. Controller
class 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,
));
}
}
33. Using 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
37. Performance – Lazy loading example
Schema
/**
* Create a relation in TblUser Model Class with User Role (tbl_role) table
*/
public function relations()
{
return array(
'userRole' => array(self::BELONGS_TO, 'TblRole', 'user_role_id'),
);
}
TblUserModel
38. 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>
If a property of only user model is accessed, only that table will be queried
39. 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>
If a property of related mode is accessed, only then it will query related model
44. Contact
For more details about our Yii development services or
our web development expertise, please get in touch
with us.
contact@folio3.com
US Office: (408) 365-4638
www.folio3.com