我想开发一个抽象类,将其扩展以适合自定义要求。 大多数方法将在此基类中完全实现。 但是,它将严重依赖于子类应定义的成员中设置的值。 我之所以说“抽象”类,是因为我想强迫该类的扩展程序为成员定义值。 这可能吗?

我知道我可以定义抽象的方法并强制扩展程序实现这些方法。 我不确定成员。 此外,这是好的设计实践吗?

例:

abstract class foo_bar
{
    // I want child class to define these
    private $member1 = 0;
    private $member2 = 0;
    private $member3 = 0;

    // Child class and instances can access this
    public function foo()
    {
        return 'foo';
    }

    // Child class must implement this
    abstract function bar();
}

#1楼 票数:2 已采纳

简而言之:不。PHP中没有诸如abstract属性之类的东西。

您也可以只在抽象类本身中将这些属性声明为protected ,以便子代继承它们。 即使您将它们声明为abstract ,也不能保证子级使用有用的值来实现它们,因此其效果大致相同。

  ask by snoopy76 translate from so

未解决问题?本站智能推荐:

1回复

PHP抽象类数组保护的属性

我在使用抽象类和OOP方面有些陌生,所以请多多包涵。 我正在尝试列出员工和客户的列表,但是由于我的StoreList类中的所有对象均受保护,因此在打印对象数组时遇到了一些麻烦。 我想要做的是将storeArray中的值打印到一个漂亮的列表中。 现在,它的所有内容都可以从Abstrac
3回复

继承php中的属性

我有一个超类,其中包含用于设置它们的属性和方法 然后我有一个需要使用该属性的子类 但我不断收到错误 我哪里错了?
6回复

回应PHP类中的变量

我快速浏览了一些与我相似的问题,但没有一个答案能够解决我遇到的问题。 我有两个文件。 product.php和index.php 。 Product.php定义了产品类,我只是使用index.php作为输出变量的页面。 理想情况下,这将用于将来输出来自不同类的对象。 produ
3回复

在PHP中设置属性的值

我有一个叫成员的班级,下面有一个例子。 我要问的是我如何设置标题的值。 因此,例如,我只允许先生,夫人,小姐和任何其他价值观会throw out an error说明Only Mr,Mrs,Miss is allowed ,名字必须是约翰...
8回复

检测对象属性在 PHP 中是否是私有的

我正在尝试创建一个可以遍历其属性的 PHP (5) 对象,仅基于其公共属性而不是私有属性来构建 SQL 查询。 由于此父对象方法将被子对象使用,因此我不能简单地选择按名称跳过私有属性(我不知道它们在子对象中是什么)。 是否有一种简单的方法可以从对象内部检测其哪些属性是私有的? 这是到目前为止我
3回复

php类中的长属性列表 - 我可以缩短它吗?

我有两节课。 两个类都使用属性列表,这些属性是相同的。 此属性列表长度为75行。 我想将它放在一个单独的文件中,然后两个类都可以访问。 但我无法使用include。 如何更改我的文件更短,属性列表更灵活? 我不确定我是否提出了我的观点,所以我举一个例子: 我有课堂和课堂
2回复

在PHP中基于父方法定义属性

我似乎无法根据基于父类Database的方法定义此属性$privileges 。 值得指出的是,当我在不同的脚本中使用相同的函数并动态定义属性时,相同的功能可以很好地工作。 每个类都由一个对象实例化,它可以工作(显然有适当的setter和getter。)
2回复

解析为PHP类属性的SQL查询中的解析错误

当我将下面的SQL查询定义为PHP类属性时,出现解析错误。 如果我改为在类方法之一中定义相同的查询,则不会出错。 有人可以告诉我如何将其正确定义为PHP类属性吗? 谢谢。 我还有其他SQL查询定义为可以正常工作的属性,但是它们不包含任何变量。