można destylować interfejsy z moim 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();
}
Będzie to produkować następujące wyjście:
<?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
Zobacz full file holding all distilled interfaces of Phalcon
Należy pamiętać, że InterfaceDistiller może tworzyć tylko interfejsy. Więc nie dostaniesz mieszanki szkieletów klasowych i interfejsu, ale tylko interfejsy.
Innym problemem jest to, że wszystkie metody interfejsu będą publiczne, ponieważ, dobrze, metody interfejsu powinny być publiczne. Możesz użyć tweak the writer, aby użyć prawdziwej widoczności. Lub możesz ograniczyć, które metody destylator będzie destylować.
Jak widać niektóre części interfejsu API nie mogą zostać rozwiązane. Dzieje się tak, ponieważ InterfaceDistiller używa Reflection do destylowania interfejsu z klas, a niektóre wartości są nie tylko dostępne w ten sposób. Rozważ ręczne wypełnienie nierozwiązywalnych wartości.
Chociaż nie jest to idealne rozwiązanie do korzystania z UseCase, powinno to jednak stanowić świetny headstart.
Jeśli zdecydujesz się dostosować i uzupełnić plik, więc jest to w pełni użyteczny, rozważ wysłanie żądania Pull z całego pliku do ludzi Phalcon
Dziękuję bardzo! Tego właśnie szukałem !!! –
w zewnętrznych bibliotekach dodaj ścieżkę do 'phalcon-devtools \ ide \ 1.3.1 \ Phalcon' – Patrioticcow
Dla wersji 3 dodałem moją globalną ścieżkę:'/usr/local/share/composer/vendor/phalcon-devtools/ide' – JREAM