Netbeans & PHP; class_alias и полный код - PullRequest
3 голосов
/ 05 июля 2011

Быстрый один; Netbeans 7.0 для разработки на PHP:

Есть ли способ сообщить NetBeans, когда class_alias используется для псевдонима класса, тем самым вызывая завершение кода для псевдонима?

class Foo{
    public static $hello = 'world';
}

class_alias('Foo', 'Bar');

Bar::$h // triggers code completion for $hello
       ^

Я все еще работаю над тем, чтобы стать опытным с NetBeans, и на самом деле я не слишком много играл с конфигурацией, поэтому я надеюсь, что есть какая-то конфигурация, специфичная для проекта, которую я могу изменить.

Заранее спасибо, ребята.


Интересно, что я могу не могу См. Ниже вместо того, чтобы использовать use () пространства имен, хотя в моем проекте нет пространства имен ) для достижения того, что понимает NetBeans:

class Foo{
    public static $hello = 'world';
}

use \Foo as Bar;

Bar::$h // DOES trigger code completion for $hello
       ^

Я не знаю, является ли это жизнеспособным решением. Мой класс Loader также содержит карту alias => classname, и когда данный класс загружается автоматически, метод load ищет карту и при необходимости создает псевдонимы.

Это не сработает, как хотелось бы, поскольку use совершенно не подходит для любого вида динамического псевдонима:

  • Нельзя использовать в любой области, кроме глобальной, use в функции или методе выдает ошибку разбора.
  • use не поддерживает динамическое именование; use \{$class} as {$alias}; незаконно.
  • Самое главное , use не переносит включения файлов, тем самым делая его использование ... ну, бесполезным. Каламбур тэстик.

Ответы [ 2 ]

6 голосов
/ 09 февраля 2015

Мне удалось создать обходной путь для этого

В начальной загрузке вашего проекта вы можете создать псевдонимы

class_alias('Some\Namespaced\ClassName', 'aliasName');
class_alias('Some\Namespaced\ClassName2', 'anotherAlias');

Чтобы заставить Netbeans его забрать, вы можете создать фиктивный файл где-нибудь в вашем проекте. например. aliases.php

class aliasName extends \Some\Namespaced\ClassName{}
class anotherAlias extends \Some\Namespaced\ClassName2{}

Расширение не является прямым эквивалентом class_alias, но для целей подсказки кода оно работает нормально.

ВАЖНО! Фактически не включайте этот файл где-либо в ваш проект, просто наличие этого файла позволит Netbeans генерировать подсказки кода.

2 голосов
/ 05 июля 2011

Нет, извините, я не думаю, что есть.

Я должен сказать, что class_alias это новый для меня!

...