Файлы классов завершения кода NetBeans - PullRequest
1 голос
/ 31 июля 2010

Я пытаюсь заставить завершение кода NetBeans 6.8 работать для этого.Кажется, он не делает это сам по себе, но мне интересно, есть ли какая-нибудь магия phpdoc или что-то, что может помочь, так как это кажется чертовски хорошим при использовании этого.1003 *

class A {

    public $B;
    public function __construct() {
        $this->B = new D();
    }
    public function C() {
        echo "C";
    }

}

class D {

    public $E;
    public function __construct() {
        // Do stuff.
    }
    public function F() {
        echo "F";
    }

}

Теперь, скажем, я делаю $A = new A();, а затем начинаю печатать $A->B->

Предполагая, что оба класса определены в одном файле, это работает отлично.Я получаю предложения полного кода для переменной E и метода F.

Однако, если классы разделены на A.php и D.php соответственно и включены в другой файл (скажем, index.php)выполнение одного и того же действия после включения обоих файлов не дает никаких предложений.

Есть идеи?Заранее спасибо!

Ответы [ 3 ]

2 голосов
/ 31 июля 2010

В большинстве случаев это работает для меня, но если у вас есть проблемы, используйте /* @var $variable ClassName */ перед строкой с $A = new A()

. Для этого вы можете использовать ярлык: введите vdoc и нажмите tab.

2 голосов
/ 31 июля 2010

Я думаю, что netbeans не смотрит на фактические включения, которые вы делаете, а скорее на путь включения проекта. Установите это, и это должно работать. Причина, вероятно, связана с тем, что большинство людей все равно используют автозагрузку, и просить об этом будет слишком много.

1 голос
/ 31 июля 2010

Чтобы расширить на ответ Mchl:

Если оба файла находятся в вашем проекте, и вы используете правильные doc-блоки, автозавершение кода найдет то, что вы ищете.В качестве примера:

/**
 * Class A
 * 
 * @author Yourname <And@Email>
 * @package Example
 */
class A {

    /**
     * @var D
     */
    public $B;

    /**
     * Constructor
     */
    public function __construct() {
        $this->B = new D();
    }

    /**
     * Function C
     * 
     * @return string
     */
    public function C () {
        return "C";
     }

}

Ввод /** и нажатие клавиши ввода прямо перед тем, как метод или переменная вызовут создание такого блока, если он уже записан ...

...