PHP. Using of methods in the base class which will be defined in the derived
===

Is it a good practice to use in the base class a method which will be defined in a derived one? For instance:

    abstract class CApplication {
        use TSingleton;

        protected final function singletonInstanceInit() {
    		if (php_sapi_name() == 'cli') {
    			$this->initCLIApp();
		}
    		else {
    			$this->initWebApp();
    		}
    	}
    }

    abstract class CWebApplication extends CApplication {	
          protected function initWebApp() { }
    }

    abstract class CCLIApplication extends CApplication {
        protected function initCLIApp() { }
    }