Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Yii in Action

KeaNy
September 18, 2014

Yii in Action

let's talk about module, component, extension.

KeaNy

September 18, 2014
Tweet

More Decks by KeaNy

Other Decks in Programming

Transcript

  1. Module Modules are useful in several scenarios. For a large-scale

    application, we may divide it into several modules, each being developed and maintained separately. Some commonly used features, such as user management, comment management, may be developed in terms of modules so that they can be reused easily in future projects.
  2. Module A module is a self-contained software unit that consists

    of models, views, controllers and other supporting components. In many aspects, a module resembles to an application. The main difference is that a module cannot be deployed alone and it must reside inside of an application. Users can access the controllers in a module like they do with normal application controllers.
  3. File Structure forum/ ForumModule.php the module class file components/ containing

    reusable user components views/ containing view files for widgets controllers/ containing controller class files DefaultController.php the default controller class file extensions/ containing third-party extensions models/ containing model class files views/ containing controller view and layout files layouts/ containing layout view files default/ containing view files for DefaultController index.php the index view file
  4. File Structure forum/ ForumModule.php the module class file components/ containing

    reusable user components views/ containing view files for widgets controllers/ containing controller class files DefaultController.php the default controller class file extensions/ containing third-party extensions models/ containing model class files views/ containing controller view and layout files layouts/ containing layout view files default/ containing view files for DefaultController index.php the index view file
  5. File Structure forum/ ForumModule.php the module class file components/ containing

    reusable user components views/ containing view files for widgets controllers/ containing controller class files DefaultController.php the default controller class file extensions/ containing third-party extensions models/ containing model class files views/ containing controller view and layout files layouts/ containing layout view files default/ containing view files for DefaultController index.php the index view file
  6. Generator in Gii “use the module generator in Gii to

    create the basic skeleton of a new module.”
  7. Usage postPerPage=Yii::app()->controller->module->postPerPage; // or the following if $this refers to

    the controller instance // $postPerPage=$this->module->postPerPage;
  8. Component Yii applications are built upon components which are objects

    written to a specification. A component is an instance of CComponent or its derived class. Using a component mainly involves accessing its properties and raising/handling its events. The base class CComponent specifies how to define properties and events.
  9. Usage $document=new Document(); // we can write and read textWidth

    $document->textWidth=100; echo $document->textWidth; // we can only read textHeight echo $document->textHeight; // we can only write completed $document->completed=true;
  10. Application Component To use an application component, we first need

    to change the application configuration by adding a new entry to its components property, like the following:
  11. Extensions Extending Yii is a common activity during development. For

    example, when you write a new controller, you extend Yii by inheriting its CController class; when you write a new widget, you are extending CWidget or an existing widget class. If the extended code is designed to be reused by third-party developers, we call it an extension.
  12. Extensions Using an extension usually involves the following three steps:

    1. Download the extension from Yii's extension repository. 2. Unpack the extension under the extensions/xyz subdirectory of application base directory, where xyz is the name of the extension. 3. Import, configure and use the extension. Each extension has a name that uniquely identifies it among all extensions. Given an extension named as xyz, we can always use the path alias ext.xyz to locate its base directory which contains all files of xyz.
  13. Zii Extensions Before we start describing the usage of third-party

    extensions, we would like to introduce the Zii extension library, which is a set of extensions developed by the Yii developer team and included in every release. When using a Zii extension, one must refer to the corresponding class using a path alias in the form ofzii.path.to.ClassName. Here the root alias zii is predefined by Yii. It refers to the root directory of the Zii library. For example, to use CGridView, we would use the following code in a view script when referring to the extension:
  14. Widget Widgets are mainly used in views. Given a widget

    class XyzClass belonging to the xyz extension, we can use it in a view as follows:
  15. Usage // widget that does not need body content <?php

    $this->widget('ext.xyz.XyzClass', array( 'property1'=>'value1', 'property2'=>'value2')); ?>
  16. Usage // widget that can contain body content <?php $this->beginWidget('ext.xyz.XyzClass',

    array( 'property1'=>'value1', 'property2'=>'value2')); ?> ...body content of the widget... <?php $this->endWidget(); ?>
  17. Q&A