The merge parameter respects array keys, so if you merge two numerically indexed arrays, they may overwrite each other or result in non-sequential keys. This is unlike the PHP array_merge() function which wipes out numerical keys and renumbers them. '> Technical Note If the chosen function callback is of the form array(&$object, $method), only one instance of the same class and with the same $method can be registered. The latest registered function callback will be used in such a scenario. '> As an optional third parameter, you can pass a $compile_id. This is in the event that you want to compile different versions of the same template, such as having separate templates compiled for different languages. Another use for $compile_id is when you use more than one $template_dir but only one $compile_dir. Set a separate $compile_id for each $template_dir, otherwise templates of the same name will overwrite each other. You can also set the $compile_id variable once instead of passing this to each call to this function. '> The php-function callback function can be either: A string containing the function name An array of the form array(&$object, $method) with &$object being a reference to an object and $method being a string containing the method-name An array of the form array($class, $method) with $class being the class name and $method being a method of the class. '>