eclipse中的自动完成pdt in codeigniter for doctrine 2 models

时间:2013-11-06 16:17:40

标签: php eclipse codeigniter autocomplete doctrine-orm

我正在使用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;

 ....

}

这可能有点帮助,但它仍然远离日食应该能够实现的自动自动完成。

1 个答案:

答案 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 $casualAccountEntities\Account的类型。

这就是为什么自动复合并不总是可用的原因。看看:

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

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