2011-11-23 26 views
6

Varolan sınıflardan oluşturulan bir php arabirimi aracı var mı? Netbeans otomatik getter/setter oluşturma gibi bir araca sahip olmak güzel olurdu ama arayüzler için. programlı kullanım içinPHP Arabirimleri Oluşturun

+2

Ne hakkında konuşuyorsunuz? Arabirimler için Getters/Setters herhangi bir anlam ifade etmez, çünkü arayüzlerin özellikleri olamaz. Netbeans otomatik getter/setter yaratma gibi bir araç olması güzel soru ( – KingCrunch

+1

@ KingCrunch 'soruyu açıklığa kavuşturmak gerekir Netbeans bir" sınıf özellikleri özelliklerinden autogenerate alıcılar ve setters sunuyor. O arayüzler için böyle bir şey istiyor. " – edorian

+0

Ah, Gördüğünüz gibi. Muhtemelen edorian zaten bir cevap veriyor, ama genellikle ("kontratla" tasarımına göre) her zaman önce ara yüzlere sahip olmalı ve imzalarına göre sınıfları oluşturmalısınız. (Sadece bundan bahsetmek istedim). – KingCrunch

cevap

15

böyle mevcut sınıflardan arayüzleri türetmek sağlar InterfaceDistiller vardır:

$distiller = new InterfaceDistiller; 
$distiller 
    ->methodsWithModifiers(\ReflectionMethod::IS_PUBLIC) 
    ->extendInterfaceFrom('Iterator, SeekableIterator') 
    ->excludeImplementedMethods() 
    ->excludeInheritedMethods() 
    ->excludeMagicMethods() 
    ->excludeOldStyleConstructors() 
    ->filterMethodsByPattern('(^get)') 
    ->saveAs(new SplFileObject('MyInterface.php')) 
    ->distill('SomeFoo', 'MyInterface'); 

Ayrıca CLI arayüzü var:

Usage: phpdistill [options] <classname> <interfacename> 

    --bootstrap       Path to File containing your bootstrap and autoloader 

    --methodsWithModifiers <number>  A ReflectionMethod Visibility BitMask. Defaults to Public. 
    --extendInterfaceFrom <name,...>  Comma-separated list of Interfaces to extend. 
    --excludeImplementedMethods   Will exclude all implemented methods. 
    --excludeInheritedMethods    Will exclude all inherited methods. 
    --excludeMagicMethods     Will exclude all magic methods. 
    --excludeOldStyleConstructors   Will exclude Legacy Constructors. 
    --filterMethodsByPattern <pattern> Only include methods matching PCRE pattern. 
    --saveAs        Filename to save new Interface to. STDOUT if omitted. 

değilim php için böyle bir işlevsellik sunan herhangi bir IDE'den haberdar olmak.

3

Şu anda, PHPStorm 8 bunu yapabilir, belki önceki sürümleri de olabilir.

Adımlar: sınıf adı

  • üzerinde imleç seçin

    1. Yeri: Elden Geçirme -> Extract -> Arabirim
    2. seçeneklerini ve bitmiş doldurun.