Php 条令2模型的codeigniter中eclipse pdt的自动完成

Php 条令2模型的codeigniter中eclipse pdt的自动完成,php,eclipse,codeigniter,autocomplete,doctrine-orm,Php,Eclipse,Codeigniter,Autocomplete,Doctrine Orm,我正在编写一个项目,使用codeigniter 2框架和doctrine 2作为使用EclipsePDT的ORM。我想知道是否有一种方法可以让doctrine 2 Entities类(位于\application\models\Entities文件夹中的类)的自动完成功能正常工作。我只设法让它随意工作了一次,所以我知道这是可能的,现在我想知道如何让它一直正常工作,或者我做错了什么 为了清楚起见,假设我们有一个控制器: class Main extends My_Controller {

我正在编写一个项目,使用codeigniter 2框架和doctrine 2作为使用EclipsePDT的ORM。我想知道是否有一种方法可以让doctrine 2 Entities类(位于\application\models\Entities文件夹中的类)的自动完成功能正常工作。我只设法让它随意工作了一次,所以我知道这是可能的,现在我想知道如何让它一直正常工作,或者我做错了什么

为了清楚起见,假设我们有一个控制器:

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;

 ....

}

这可能会有一点帮助,但离eclipse应该能够实现的自动完成功能还有一段距离。

让我猜猜我是否理解。我从未使用过EclipsePDT,但在不清楚的情况下应该在内联变量中使用注释。下面的代码有助于IDE了解var
find()
函数返回的类型,因为该函数动态生成一个实体。没有返回特定的类型

/** 
 * @var $casualAccount  Entities\Account
 */
$casualAccount = $this->doctrine->em->find('Entities\Account' , 1);
$casualAccount-> **AUTOCOMPLETITION SHOULD WORK AT THIS POINT *
上面的注释告诉IDE,
$casualAccount
实体\帐户的类型

这就是为什么自动完成并不总是可用的原因。看一看:

$this->load->library('Foo');
$this->foo-> /* nothing to show */

自动完成在这里不起作用,因为类引用本身是动态生成的,即使您已经记录了它。

您的评论有点帮助,问题已经更新