2013-04-04 15 views
8

Czy istnieje jakiś szkielet dla frameworka PhalconPHP, którego mogę używać w moim IDE Netbeans do celów autouzupełniania?Autouzupełnianie IDE dla PhalconPHP

Wszystko czego potrzebujesz to sterta plików z deklaracji klasy/interfejsu, tak:

namespace \Phalcon; 

class Tag { 

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

    ... 

} 

Odpowiedz

22

Może jesteś patrząc na to? DevTools Phalcon https://github.com/phalcon/phalcon-devtools/tree/master/ide

+0

Dziękuję bardzo! Tego właśnie szukałem !!! –

+6

w zewnętrznych bibliotekach dodaj ścieżkę do 'phalcon-devtools \ ide \ 1.3.1 \ Phalcon' – Patrioticcow

+0

Dla wersji 3 dodałem moją globalną ścieżkę:'/usr/local/share/composer/vendor/phalcon-devtools/ide' – JREAM

4

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

+1

Dzięki Gordon do punktu wyjścia. Jeśli nikt nie udzieli lepszej odpowiedzi, oznaczy twoją jako poprawną za kilka dni, ale teraz weź ode mnie uprowadzenie. –