I actually found the answer! While registerCssFile() does work, there's a much more elegant solution, Yii packages!
Consider the following file structure :
protected
\---views
|---home
| \---assets
| |---css
| | |---styles.css
| | |---custom.css
| | \---print.css
| |---js
| | |---functions.js
| | |---jquery.js
| | \---ajax.js
| |---images
| |---img1.png
| |---imgn.png
| \---imgX.png
\---index.php
You'd declare a package like so in index.php, taking care to use the Yii framework's dot notation for the basePath :
$package = array(
'basePath' => 'application.views.home.assets',
'css' => array( 'styles.css' ),
'js' => array( 'jquery.js', 'functions.js' )
);
Then, use Yii's clientScript to add and register the package.
Yii::app()->clientScript()
->addPackage( 'package-name', $package )
->registerPackage( 'package-name' );
What this will then do is publish ALL the contents of basePath and register the CSS and JS files specified in the package. For example, styles.css, custom.css, and print.css will all be published but only styles.css will be appended to the <head>.
Consider this rather than using :
$assetFolder = Yii::app()->assetManager->publish( dirname( __FILE__ ) . '/assets' );
Yii::app()->clientScript->registerCssFile( $assetFolder . 'styles.css' );
Yii::app()->clientScript->registerScriptFile( $assetFolder . 'jquery.js' );
Yii::app()->clientScript->registerScriptFile( $assetFolder . 'function.js' );
Michael is correct that there wouldn't be too many anyway so specifying the css and js files in the package declaration shouldn't be too much of a problem.