Answering your exact question "why the first approach doesn't work".
The folder /protected/controller
is NOT in "include path" of the project.
Just add 'import'=>array('application.controllers.*')
into your config file or use
include(Yii::app()->getBasePath().DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.'PostController.php');
just before creating an object of PostController. Ah and creating new controller requires a name for this controller, so it should be something like
$controller = new PostController('post_controller');
I would like to point out that this type of controller creation is useless in Yii, as you are creating a controller completely separated from project, so it will be almost useless. As you noted, the correct way to create controller is through Yii::app()->createController()