Автокомплит в Eclipse, как ?!

Активист

Активист
Команда форума
Собственно, подскажите как поправить? Не работает автокомлпит:

Есть следующие файлы:
PHP:
<?php 
abstract class objects {
	protected $_objects = array();
	
	public function create() {
		$this->_objects[] = $object = $this->object();
		$object->setSQLTable($this->table);
		return $object;
	}
	
	public function load($filter = array(), $value = false) {
		$this->_objects = array();
		
		if ($filter && !is_array($filter)) {
			$filter = array($filter => $value);
		}
	
		$sql = new sql();
		$sql->setTable($this->table())
				->setFilter($filter)
				->query();
		
		while ($row = $sql->fetch()) {
			$object = $this->create();
			$object->setAttributes($row);
		}
		
		return $this;
	}

	public function fetch() {
		return array_shift($this->_objects);
	}
	
	
	public function find($attribute, $value, $eq = false) {
		$method = "get".$attribute;
		
		if (!method_exists($this->object(), $method)) {
			trigger_error("Ошибка. Метод {$method} объекта {$this->object()} не сущевствует", E_USER_ERROR);
		}
		
		foreach ($this->_objects as $object) {
			if ($eq) {
				if ($object->$method() === $value) {
					return $object;
				}
			} else {
				if ($object->$method() == $value) {
					return $object;
				}
			}
		}
		
		return false;
	}
	
	public function sizeof() {
		return sizeof($this->_objects);
	}
	
	public function length() {
		return $this->sizeof();
	}
	
	public function get($index = false) {
		
		if ($index !== false) {
			return isset($this->_objects[$index]) ? $this->_objects[$index] : false;
		}
		
		return $this->_objects;
	}
	
}
?>

<?php 
class administrators extends objects implements iAdministrators {
	public function table() {
		return "administrators";
	}
	
	public function object() {
		return new administrator();
	}
}
?>

<?php 
interface iAdministrators {
	/**
	 * Enter description here ...
	 * @return administrator
	 */
	public function object();
	
	/**
	 * Enter description here ...
	 * @return string 
	 */
	public function table();
	
	/**
	 * Enter description here ...
	 * @return administrator
	 */
	public function create();
	
	/**
	 * Enter description here ...
	 * @param unknown_type $filter
	 * @param unknown_type $value
	 * @return administrators
	 */
	public function load($filter = array(), $value = false);
	
	/**
	 * Enter description here ...
	 * @return administrator
	 */
	public function fetch();
	
	/**
	 * Enter description here ...
	 * @param unknown_type $attribute
	 * @param unknown_type $value
	 * @param unknown_type $eq
	 * @return administrator
	 */
	public function find($attribute, $value, $eq = false);
	
	/**
	 * Enter description here ...
	 * @return integer
	 */
	public function sizeof();
	
	/**
	 * Enter description here ...
	 * @return interger
	 */
	public function length();
	
	/**
	 * Enter description here ...
	 * @param unknown_type $index
	 * @return administrator
	 */
	public function get($index = false);
}
?>

<?php 
class administrator extends object {
	public $id = null;
	public $login = null;
	public $email = null;
	public $password = null;
	public $isAdministrator = 0;
	public $secret = null;
	
	protected $SQLAttributes = array('id', 'login', 'email', 'password', 'isAdministrator', 'secret');
	
	private $_accessModules = false;
	
	public function setId($id) {
		$this->id = $id;
		return $this;
	}
	
	public function setLogin($login) {
		$this->login = $login;
		return $this;
	}
	
	public function setEmail($email) {
		$this->email = $email;
		return $this;
	}
	
	public function setIsAdministrator($isAdministrator) {
		$this->isAdministrator  = $isAdministrator ? 1 : 0;
		return $this;
	}
	
	public function setPassword($password) {
		$this->password = crypt($password);
		return $this;
	} 
	
	public function setSecret($secret) {
		$this->secret = $secret;
		return $this;
	}
	
	public function getId() {
		return $this->id;
	}
	
	public function getLogin() {
		return $this->login;
	}
	
	public function getEmail() {
		return $this->email;
	}
	
	public function getPassword() {
		return $this->getPassword();
	}
	
	public function getIsAdministrator() {
		return $this->isAdministrator;
	}
	
	public function getSecret() {
		return $this->secret;
	}
	
	public function accessModules() {
		return $this->_accessModules;
	}
	
	public function save() {
		if ($this->check()) {
			return false;
		};
		
		if ($this->getId()) {
			$this->update();
		} else {
			$this->add();
		}
		
		return true;
	}
	
	public function check() {
		return array();
	}
	
	
}
?>
$administrators = new administrators();
Вот тут нет автокомплита:
$administrators->fetch()->... (нифига не предлагает)
 

Активист

Активист
Команда форума
Я его не могу указать, поскольку тип будет меняться, а сам objects абстрактный. Тип я указал указал в интерфейсе.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Кстати, phpStorm нормально берет подсказку из интерфейса
 

Активист

Активист
Команда форума
В классе administrators нет реализации, она есть в классе abstract objects.

Есть соображения?
 

Активист

Активист
Команда форума
Он там не может быть указан, поскольку этот код используется для работы с множеством объектов.
 

Absinthe

жожо
Понял. Ну остается радоваться, что хоть что-то подсказывает.
Вот в Ruby и такого нет.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Можно сделать так:

За эклипс не поручусь, но в шторме работает.
 

Absinthe

жожо
флоппик это все IDE умеют.
Но PhpStorm все же выше уровнем, хотя с 5.4 обделались - до сих пор поддержка нулевая.
 

Absinthe

жожо
флоппик у меня последняя стабильная версия. Там нет даже $a = [];
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Ну, 5.4 стабильным тоже назвать нельзя, кагбы.
 

A1x

Новичок
в нетбинсе работает без всяких дополнительных усилий
(а я уж было думал переходить на шторм)
 
Сверху