Wpis z mikrobloga

nie wiem czy rozumiem o co pytasz, ale zmienna w metodzie może być typu abstrakcyjnego albo interfacem, tak samo zadeklarowana zmienna w klasie. Podaj przykład co Ci nie działa, zobaczymy razem
@MartinPL: sorry, ale dalej nie rozumiem o co Ci chodzi. Kawałek kodu być pokazał?

<?php

abstract class a{
}

class b extends a{
}

class c {
public function __construct(public a $var){}
}

class d extends c {
}

$d = new d(new b());
@yelm: pewnie chodzi o coś takiego:

interface UserInterface {
// Interface requires that property is public readable.
public readonly string $name;
}

class User implements UserInterface {
// Implemented property
public readonly string $name = 'dsadasd';

// or via dependency constructor
public function __construct(public readonly string $name) {}
}

Dzięki temu możesz wstrzyknąć Usera pod UserInterface i mieć pewność, że obiekt zawiera propa.

Jak nie było "readonly" w starych wersjach PHPa,
@nowiutki: w pytaniu jest o interface lub abstrakcje. Przez abstrakcję się da a przez interface nie bo nie można w nim deklarować zmiennych. Moim zdaniem nie ma co tu rozpaczać i pisać WTF, skoro tylko 3 mainstreamowe języki to wspierają, a znaczna większość nie. Ale masz rację, że może i by się teraz przydało móc takie coś zrobić.

BTW w Javie: Variables which declared in interface are by default public, static