The Yii PHP project started on January 1, 2008, in order to fix some drawbacks of the PRADO framework. For example, in its early versions PRADO was slow when handling complex pages, had a steep learning curve and many controls were difficult to customize, while Yii was much more efficient at that time. In October 2008, after ten months of private development, the first alpha version of Yii was released. On December 3, 2008, Yii 1.0 was formally released.
- Model-View-Controller (MVC) design pattern.
- Generation of complex WSDL service specifications and management of Web service request handling.
- Internationalization and localization (I18N and L10N). It supports message translation, date and time formatting, number formatting, and interface localization.
- Layered caching scheme. It supports data caching, page caching, fragment caching and dynamic content. The storage medium of caching can be changed.
- Error handling and logging. Errors are handled and presented more nicely, and log messages can be categorized, filtered and routed to different destinations.
- Security measures include cross-site scripting (XSS) prevention, cross-site request forgery (CSRF) prevention, cookie tampering prevention, etc.
- Unit and functionality testing based on PHPUnit and Selenium.
- Automatic code generation for the skeleton application, CRUD applications, etc.
- Code generated by Yii components and command line tools complies to the XHTML standard.
- Carefully designed to work well with third-party code. For example, it's possible to use code from PEAR or Zend Framework in a Yii application.