8

PhalconPHP 框架是否存在任何类型的骨架,我可以在我的 Netbeans IDE 中用于自动完成目的?

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

namespace \Phalcon;

class Tag {

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

    ...

}
4

3 回答 3

23

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

于 2013-04-04T13:29:58.043 回答
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

查看包含 Phalcon 的所有蒸馏接口的完整文件

请注意,InterfaceDistiller 只能产生接口。所以你不会得到类骨架和接口的混合,而只是接口。

另一个问题是接口方法都是公共的,因为接口方法应该是公共的。您可以调整作者以使用真正的可见性。或者您可以限制 Distiller 将蒸馏的方法。

如您所见,API 的某些部分无法解析。这是因为 InterfaceDistiller 使用反射从类中提取接口,并且某些值不仅可以通过这种方式获得。考虑手动填写无法解析的值。

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

如果您决定调整并完成文件以使其完全可用,请考虑将包含整个文件的拉取请求发送给 Phalcon 人员

于 2013-04-04T11:03:28.587 回答
4

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

如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?

Sublime Text 中也支持 Volt

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

于 2013-04-04T13:33:36.553 回答