Helper Classes ============== Yii provides many helper classes to help simplify some common coding tasks, such as string/array manipulations, HTML code generation. These helper classes are organized under the `yii\helpers` namespace and are all static classes (meaning they contain only static properties and methods and should not be instantiated). You use a helper class by directly calling its static method, like the following, ```php use yii\helpers\ArrayHelper; $c = ArrayHelper::merge($a, $b); ``` Extending Helper Classes ------------------------ Static classes are typically hard to customize because when you use them, you already hardcode the class names in your code, and as a result your customized versions will not get used unless you do some global replacement in your code. To solve this problem, Yii breaks each helper into two classes: one is base class (e.g. `BaseArrayHelper`) and the other the concrete class (e.g. `ArrayHelper`). When you use a helper, you should only use the concrete version. If you want to customize a helper, e.g., `ArrayHelper`, do the following steps: 1. Name your class the same as the concrete class provided by Yii, including the namespace part, e.g., `yii\helpers\ArrayHelper`; 2. Extend your class from the base class, e.g., `class ArrayHelper extends \yii\helpers\BaseArrayHelper`; 3. In your class, override any method or property as your want, or add new methods or properties; 4. In your application that you plan to use your own version of the helper class, include the following line of code in the bootstrap script: ```php Yii::$classMap['yii\helpers\ArrayHelper'] = 'path/to/ArrayHelper.php'; ``` The Step 4 above will instruct Yii class autoloader to load your version of the helper instead of the one included in the Yii distribution. > Tip: You can also use `Yii::$classMap` to replace ANY core Yii class, not necessarily helper classes, > with your own customized version.