How to tell code inspector my base class?


I got base abstract class with code like this:

   protected function importFromLegacyData($row) {}

   public static function getById($id) {

      $className = get_called_class();
= new $className();
      return $result;

My problem really lies in Code Inspection - it complains method importFromLegacyData() is not found in the class. This is no surprise really, because I guess CI does not simply know what class $result objects refers too. I'd be fine if CI could even assume that $result is my base class as method is importFromLegacyData() implemented here - can this be done in any way?

Comment actions Permalink

Hi there,

Use PHPDoc for inline variable:

/** @var MyClass $result */
$result = new $className();

You could try to use "self" or "static" to specify current class instead of specific class ("MyClass" in the example above) -- I just do not know if this will work this way (never tried myself).

Comment actions Permalink

Seems both approaches work. So either inline PHPDoc or replacing get_called_class() with new static(); solve my problem. Thanks.


Please sign in to leave a comment.