Bir dizinin çıktı Objects tipi ima / otomatik tamamlama almak nasıl?

4 Cevap php

In my framework, I have a method that returns an array with objects. It looks pretty much like this:

    /**
     * @return array Array with Action objects
     */
    public function getActions() {
        return $this->actions;
    }

Sadece bu yöntem, bir dizi dönmek olacağını söylüyor, bu yöntemi çağrılırken bu kullanıcı Class bir doc-açılan alacak. Ama o kadar! Kullanıcı dizinin bir nesneyi aldığında Sonra, IDE aptal ve / otomatik tamamlama şey önermek / bilmiyor.

Burada çerçeve kullanıcıların hayatını kolaylaştırmak için bir çerçeve geliştirici olarak yapabileceğim bir şey var mı? Yoksa ne ben onları yapmak için önermek, bu yüzden onların IDE diziden döndürülen nesne bilir ne tür olabilir?

Ya da genel olarak: IDE bu yöntemleri o nesne için kullanılabilir ne önerebilirsiniz böylece nesnenin ne tür diziden geldi bildirmek nasıl?

4 Cevap

Eğer getActions() yöntemi çağırdığınızda, nesnelerin yinelenen dizinin önce açıklama satırı Önlerine:

$actions = $o->getActions();

/* @var Action $action */
foreach ( $actions as $action ) {
    ...
}

Ben belki o kadar gibi açıkça atama dışındaki bir dizi üyesi türüne ipucu olamaz düşünüyorum:

$my_object = new myClass();
$my_array[567] = $my_object;

Akla gelen tek fikir bir dizi yerine this->actions için bir nesne kullanmaktır. Bu nesne anlamak için herhangi bir iyi IDE için önceden tanımlamak olabilir.

php dizilerde nesneler şey olabilir bir dinamik / zayıf yazılı dilidir. yani IDE ne olacağını nesne bilemeyiz. Aşağıdaki dizi hayal:

array ( 1, "string", someObject, array (1,"string",3) );

JetBrains yeni WebIDE iyi statik kod analizi vardır, sadece kullanabilirsiniz @ [] orada elementType dönmek. Ve çok gerçek kodu doğrudan türlerini infere olabilir - see details on their site