PhalconPHP的IDE自动完成

时间:2013-04-04 10:30:19

标签: php netbeans ide phalcon

是否存在PhalconPHP框架的任何骨架,我可以在我的Netbeans IDE中使用它来实现自动完成目的?

我需要的只是一堆带有类/接口声明的文件,如下所示:

namespace \Phalcon;

class Tag {

    /**
     * bla bla bla
     * ...
     */
    public static function setTitle( $title ) {}

    ...

}

3 个答案:

答案 0 :(得分:22)

也许你正在寻找这个? Phalcon DevTools https://github.com/phalcon/phalcon-devtools/tree/master/ide

答案 1 :(得分:4)

您可以使用我的InterfaceDistiller提取界面:

namespace com\github\gooh\InterfaceDistiller;
include __DIR__ . '/../src/autoload.php';

var_dump( extension_loaded('phalcon') ); // should be true

$phalconClasses = new \RegexIterator(
    new \ArrayIterator(get_declared_classes()),
    '/^Phalcon/'
);

foreach ($phalconClasses as $phalconClass)
{
    $reflector = new \ReflectionClass($phalconClass);
    $methodIterator = new \ArrayIterator($reflector->getMethods());

    $distillate = new Distillate;
    $distillate->setInterfaceName($reflector->getNamespaceName());
    $distillate->setExtendingInterfaces(
        implode(',', $reflector->getInterfaceNames())
    );

    foreach ($methodIterator as $method) {
        $distillate->addMethod($method);
    }

    $file = new \SplTempFileObject(-1);
    $writer = new Distillate\Writer($file);
    $writer->writeToFile($distillate);
    $file->rewind();
    $file->fpassthru();
}

然后会产生以下输出:

<?php
interface Phalcon
{
    public function __clone();
    public function __construct($message /* = unresolvable */, $code /* = unresolvable */, $previous /* = unresolvable */);
    public function getMessage();
    public function getCode();
    public function getFile();
    public function getLine();
    public function getTrace();
    public function getPrevious();
    public function getTraceAsString();
    public function __toString();
}

// this continues for all classes in the extension

请参阅full file holding all distilled interfaces of Phalcon

请注意,InterfaceDistiller只能生成接口。所以你不会混合使用类骨架和接口,而只是接口。

另一个问题是接口方法都是公开的,因为接口方法应该是公共的。您可以tweak the writer使用真正的可见性。或者您可以限制Distiller将提取的方法。

正如您所看到的,API的某些部分无法解析。这是因为InterfaceDistiller使用Reflection从类中提取接口,并且某些值不仅仅是这样可用的。考虑手工填写无法解决的值。

虽然不适合您的UseCase,但它应该会给你一个很好的开端。

如果您决定调整并完成该文件以使其完全可用,请考虑将整个文件的Pull Request发送给Phalcon人员

答案 2 :(得分:4)

我不确定Netbeans及其与在其他IDE中提供自动完成的文件的兼容性,但已经有PHPStorm支持

How do I use phalcon-devtools\ide\phpstorm in phpstorm?

在Sublime Text

中也支持Volt

https://github.com/phalcon/volt-sublime-textmate