PHP 抽象属性

新手上路,请多包涵

有没有办法在 PHP 中定义抽象类属性?

 abstract class Foo_Abstract {
    abstract public $tablename;
}

class Foo extends Foo_Abstract {
    //Foo must 'implement' $property
    public $tablename = 'users';
}

原文由 Tamás Pap 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 486
2 个回答

没有定义属性这样的事情。

您只能声明属性,因为它们是初始化时保留在内存中的数据容器。

另一方面,一个函数可以被声明(类型、名称、参数)而不被定义(函数体缺失),因此可以被抽象化。

“抽象”仅表示已声明但未定义的内容,因此在使用它之前,您需要对其进行定义,否则它将变得无用。

原文由 Mathieu Dumoulin 发布,翻译遵循 CC BY-SA 3.0 许可协议

回答问题为时已晚,但您可以使用 selfstatic 之间的区别,如下所示

<?php
class A { // Base Class
    protected static $name = 'ClassA';
    public static function getSelfName() {
        return self::$name;
    }
    public static function getStaticName() {
        return static::$name;
    }
}

class B extends A {
    protected static $name = 'ClassB';
}

echo A::getSelfName(); // ClassA
echo A::getStaticName(); // ClassA

echo B::getSelfName(); // ClassA
echo B::getStaticName(); // ClassB

原文由 M a m a D 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题