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