@Mitchiru's answer is good and basically correct.
If you created an external extension using Kickstarter and use pi_base, then there is already an instance of tslib_cObj, and the whole construction becomes simpler:
// get type of inner extension, eg. USER or USER_INT $cObjType = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_innerextension_pi1']; // get configuration array of inner extension $cObjConf = $GLOBALS['TSFE']->tmpl->setup['plugin.']['tx_innerextension_pi1.']; // add own parameters to configuration array if needed - otherwise skip this line $cObjConf['myparam'] = 'myvalue'; // call main method of inner extension, using cObj of outer extension $content = $this->cObj->cObjGetSingle($cObjType, $cObjConf);
source share