I would use YoukuApiWrapper as the return (or possibly YoukuApiWrapper|null) rather than this.  I feel this is more informative and on a practical level, PHPStorm won't be able to code complete given this return.  I know you're trying to capture that the return object will be different if YoukuApiWrapper is ever subclassed, but even then it will still be true that any subclass is also a YoukuApiWrapper