Bir yerde özel bir not eklemem gerektiğini hayal ediyorum ama parmaklarımı geçerken, PhpStorm'un garip miras kalıpları verilen dönüş türlerini çözecek kadar akıllı olduğunu düşünüyorum. Ben UserCollection::getFirst()
çağırdığınızda ben MessageCollection::getFirst()
çağırdığınızda bir Message
anlaşılmaktadır ederken User
, iade edildi anlaşılmaktadır eğerPhpStorm'un bu yöntemin dönüş türünü çıkarması mümkün mü?
<?php
class Collection extends \ArrayObject
{
public function __construct(array $items)
{
foreach ($items as $key => $value) {
if (isset(static::$requiredType) && !$item instanceof static::$requiredType)
$this->offsetSet($key, $value);
}
}
public function getFirst()
{
return $this->offsetGet(0);
}
}
class MessageCollection extends Collection
{
protected static $requiredType = 'Message';
}
class UserCollection extends Collection
{
protected static $requiredType = 'User';
}
bunu istiyorum:
Örneğin, ben bu andıran bazı kod var Iade edildi. Bu sonuca ulaşmak için bir yere koyabileceğim bir açıklama var mı?
ilk düşüncem böyle bir şeydi:
/**
* @return Message|User|XXXX|YYYY|ZZZZ|AAAA|BBBB|CCCC|DDDD
*/
public function getFirst()
{
return $this->offsetGet(0);
}
ama ben daha tahsilat sınıfları eklendikçe bu yararsız olma noktasına biraz saçma alacağı düşünün.
Ben bu düşünce gibi. Benzer bir açıklama, "foreach" döngülerinde de çalışabilir mi? – johncorser
foreach için böyle bir şey kullanabilirsiniz: '/ ** @var \ User [] $ items * /'. – Dmitry
Benim foreach döngüsünü her yazdığımda kodumda böyle yorumların nasıl yazıldığını anlayamıyorum ... – johncorser