PhalconPHP 框架是否存在任何类型的骨架,我可以在我的 Netbeans IDE 中用于自动完成目的?
我只需要一堆带有类/接口声明的文件,如下所示:
namespace \Phalcon;
class Tag {
/**
* bla bla bla
* ...
*/
public static function setTitle( $title ) {}
...
}
也许你正在寻找这个?Phalcon 开发工具 https://github.com/phalcon/phalcon-devtools/tree/master/ide
您可以使用我的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
请注意,InterfaceDistiller 只能产生接口。所以你不会得到类骨架和接口的混合,而只是接口。
另一个问题是接口方法都是公共的,因为接口方法应该是公共的。您可以调整作者以使用真正的可见性。或者您可以限制 Distiller 将蒸馏的方法。
如您所见,API 的某些部分无法解析。这是因为 InterfaceDistiller 使用反射从类中提取接口,并且某些值不仅可以通过这种方式获得。考虑手动填写无法解析的值。
虽然不适合您的用例,但它应该给您一个很好的开端。
如果您决定调整并完成文件以使其完全可用,请考虑将包含整个文件的拉取请求发送给 Phalcon 人员
我不确定 Netbeans 及其与在其他 IDE 中提供自动完成功能的文件的兼容性,但已经支持 PHPStorm
如何在 phpstorm 中使用 phalcon-devtools\ide\phpstorm?
Sublime Text 中也支持 Volt