我正在使用codeigniter 2框架编写一个项目,使用eclipse PDT将doctrine 2作为ORM。我想知道是否有办法让自动复合工作为doctrine 2 Entities类(位于\ application \ models \ Entities文件夹中的那些)我设法只使用CASUALLY一次,所以我知道它是可能的,现在我想知道如何让它始终有效或我做错了。
要清楚,我们假设我们有这个控制器:
class Main extends My_Controller {
function index() {
$casualAccount = $this->doctrine->em->find('Entities\Account' , 1);
$casualAccount-> **AUTOCOMPLETITION NOT WORKING HERE**
$this->load->view('welcome_message.php');
}
}
我们在\models\Entities
中有这个模型:
use Doctrine\ORM\Mapping as ORM;
/**
* Entities\Account
*/
class Account
{
/**
* @var integer $id
*/
private $id;
/**
* @var string $Mail
*/
private $Mail;
/**
* @var string $Password
*/
private $Password;
/**
* @var string $Type
*/
private $Type;
/**
* @var string $First_name
*/
private $First_name;
/**
* @var string $Last_name
*/
private $Last_name;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set Mail
*
* @param string $mail
* @return Account
*/
public function setMail($mail)
{
$this->Mail = $mail;
return $this;
}
/**
* Get Mail
*
* @return string
*/
public function getMail()
{
return $this->Mail;
}
/**
* Set Password
*
* @param string $password
* @return Account
*/
public function setPassword($password)
{
$this->Password = $password;
return $this;
}
/**
* Get Password
*
* @return string
*/
public function getPassword()
{
return $this->Password;
}
/**
* Set Type
*
* @param string $type
* @return Account
*/
public function setType($type)
{
$this->Type = $type;
return $this;
}
/**
* Get Type
*
* @return string
*/
public function getType()
{
return $this->Type;
}
/**
* Set First_name
*
* @param string $firstName
* @return Account
*/
public function setFirstName($firstName)
{
$this->First_name = $firstName;
return $this;
}
/**
* Get First_name
*
* @return string
*/
public function getFirstName()
{
return $this->First_name;
}
/**
* Set Last_name
*
* @param string $lastName
* @return Account
*/
public function setLastName($lastName)
{
$this->Last_name = $lastName;
return $this;
}
/**
* Get Last_name
*
* @return string
*/
public function getLastName()
{
return $this->Last_name;
}
更新。 Manix评论正在帮助一点点。可以使用以下语法在类中声明一个变量,告诉它将是什么类:
class Main extends My_Controller {
/**
* @var Entities\Account
*/
var $casualAccount;
....
}
这可能有点帮助,但它仍然远离日食应该能够实现的自动自动完成。
答案 0 :(得分:0)
让我猜想我是否理解。我从来没有使用Eclipse PDT,但是当它不清楚时应该在内联变量中使用注释。下面的代码有助于IDE返回什么类型的var find()
函数,因为此函数动态生成实体。没有返回特定类型。
/**
* @var $casualAccount Entities\Account
*/
$casualAccount = $this->doctrine->em->find('Entities\Account' , 1);
$casualAccount-> **AUTOCOMPLETITION SHOULD WORK AT THIS POINT *
上面的注释告诉IDE
$casualAccount
是Entities\Account
的类型。
这就是为什么自动复合并不总是可用的原因。看看:
$this->load->library('Foo');
$this->foo-> /* nothing to show */
自动完成在这里不起作用,因为类引用本身是动态生成的,即使你记录了它。