Folio3 - An Introduction to PHP Yii

715 views

Published on

An Introduction to PHP Yii. What it is, its key features, how to install, code samples and performance vs other frameworks.

Published in: Software, Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
715
On SlideShare
0
From Embeds
0
Number of Embeds
47
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Folio3 - An Introduction to PHP Yii

  1. 1. www.folio3.com@folio_3
  2. 2. Agenda  Folio3 – Company Overview  Introduction to Yii  Workflow (MVC)  Installation Steps  Features  Some Code Samples  Model  Using Model from Controller  Controller  View  Performance
  3. 3. Folio3 – An Overview www.folio3.com@folio_3
  4. 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. 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. 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. 7. Areas of Focus: Enterprise  Automating workflows  Cloud based solutions  Application integration  Platform development  Healthcare  Mobile Enterprise  Digital Media  Supply Chain
  8. 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. 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. 10. Why Yii? ISit fast? ... ISit secure? ... ISit professional? ... ISit right for my next project?
  11. 11. Folio3 Yes It Is!
  12. 12. Yii – An Introduction www.folio3.com@folio_3
  13. 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/
  14. 14. Introduction – Workflow (MVC) Source: http://www.yiiframework.com/doc/guide/1.1/en/basics.mvc#a-typical-workflow
  15. 15. Introduction - Installation
  16. 16. Introduction - Installation
  17. 17. Introduction - Installation Extract the framework folder to any directory with access rights
  18. 18. Introduction - Installation Extract the requirements folder to a web- accessible directory http://www.example.com/requirements
  19. 19. Requirements
  20. 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
  21. 21. Introduction - Installation That’s it!
  22. 22. Introduction – Installation - Summary Download Extract framework folder Check requirements Run install command from console
  23. 23. Introduction – Installation - Preview
  24. 24. Features www.folio3.com@folio_3
  25. 25. Features
  26. 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. 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. 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. 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)
  30. 30. Code Samples www.folio3.com@folio_3
  31. 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. 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. 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
  34. 34. 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', ), )); ?>
  35. 35. Performance www.folio3.com@folio_3
  36. 36. Performance – Comparison with other frameworks Source: http://www.yiiframework.com/performance
  37. 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. 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. 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
  40. 40. Performance – Drupal & Yii Source: http://erickennedy.org/Drupal-7-Reasons-to-Switch
  41. 41. Performance – Drupal & Yii Source: http://erickennedy.org/Drupal-7-Reasons-to-Switch
  42. 42. Performance – Drupal & Yii Source: http://erickennedy.org/Drupal-7-Reasons-to-Switch
  43. 43. References  http://www.yiiframework.com  http://www.yiiframework.com/extensions/  http://www.yiiframework.com  http://erickennedy.org/Drupal-7-Reasons-to- Switch
  44. 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

×