You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					83 lines
				
				2.8 KiB
			
		
		
			
		
	
	
					83 lines
				
				2.8 KiB
			| 
											12 years ago
										 | Basic concepts of Yii
 | ||
|  | =====================
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Component and Object
 | ||
|  | --------------------
 | ||
|  | 
 | ||
|  | Yii 2.0 breaks the `CComponent` class in 1.1 into two classes: `Object` and `Component`.
 | ||
|  | The `Object` class is a lightweight base class that allows defining class properties
 | ||
|  | via getters and setters. The `Component` class extends from `Object` and supports
 | ||
|  | the event feature and the behavior feature.
 | ||
|  | 
 | ||
|  | If your class does not need the event or behavior feature, you should consider using
 | ||
|  | `Object` as the base class. This is usually the case for classes that represent basic
 | ||
|  | data structures.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Object Configuration
 | ||
|  | --------------------
 | ||
|  | 
 | ||
|  | The `Object` class introduces a uniform way of configuring objects. Any descendant class
 | ||
|  | of `Object` should declare its constructor (if needed) in the following way so that
 | ||
|  | it can be properly configured:
 | ||
|  | 
 | ||
|  | ```php
 | ||
|  | class MyClass extends \yii\base\Object
 | ||
|  | {
 | ||
|  |     public function __construct($param1, $param2, $config = [])
 | ||
|  |     {
 | ||
|  |         // ... initialization before configuration is applied
 | ||
|  | 
 | ||
|  |         parent::__construct($config);
 | ||
|  |     }
 | ||
|  | 
 | ||
|  |     public function init()
 | ||
|  |     {
 | ||
|  |         parent::init();
 | ||
|  | 
 | ||
|  |         // ... initialization after configuration is applied
 | ||
|  |     }
 | ||
|  | }
 | ||
|  | ```
 | ||
|  | 
 | ||
|  | In the above, the last parameter of the constructor must take a configuration array
 | ||
|  | which contains name-value pairs for initializing the properties at the end of the constructor.
 | ||
|  | You can override the `init()` method to do initialization work that should be done after
 | ||
|  | the configuration is applied.
 | ||
|  | 
 | ||
|  | By following this convention, you will be able to create and configure a new object
 | ||
|  | using a configuration array like the following:
 | ||
|  | 
 | ||
|  | ```php
 | ||
|  | $object = Yii::createObject([
 | ||
|  |     'class' => 'MyClass',
 | ||
|  |     'property1' => 'abc',
 | ||
|  |     'property2' => 'cde',
 | ||
|  | ], $param1, $param2);
 | ||
|  | ```
 | ||
|  | 
 | ||
|  | More on configuration in [configuration](configuration.md)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Path Alias
 | ||
|  | ----------
 | ||
|  | 
 | ||
|  | Yii 2.0 expands the usage of path aliases to both file/directory paths and URLs. An alias
 | ||
|  | must start with a `@` character so that it can be differentiated from file/directory paths and URLs.
 | ||
|  | For example, the alias `@yii` refers to the Yii installation directory. Path aliases are
 | ||
|  | supported in most places in the Yii core code. For example, `FileCache::cachePath` can take
 | ||
|  | both a path alias and a normal directory path.
 | ||
|  | 
 | ||
|  | Path alias is also closely related with class namespaces. It is recommended that a path
 | ||
|  | alias be defined for each root namespace so that you can use Yii the class autoloader without
 | ||
|  | any further configuration. For example, because `@yii` refers to the Yii installation directory,
 | ||
|  | a class like `yii\web\Request` can be autoloaded by Yii. If you use a third party library
 | ||
|  | such as Zend Framework, you may define a path alias `@Zend` which refers to its installation
 | ||
|  | directory and Yii will be able to autoload any class in this library.
 | ||
|  | 
 | ||
|  | 
 | ||
|  | Autoloading
 | ||
|  | -----------
 | ||
|  | 
 | ||
|  | TBD
 |