php - 扩展 PHP 类

标签 php class extends

我仍在学习如何使用类,我想知道什么时候应该使用 extends 关键字(扩展类)。

假设我有一个做 A 事情的类(而且它是一个单例)。将它扩展到另一个做 B 的事情是否可以,即使 B 类与 A 类并不真正相关,但它使用了很多它的方法?还是应该创建一个新类?

最佳答案

当谈到面向对象编程时,通常一个类执行特定任务,例如保存用户信息或输入/输出控制。

当你假设有 1 个对象用于控制输出时,你可以在该对象中设置一个方法来控制输出类型,或者应该如何处理每个特定内容,但这意味着对象唯一目的已被打破,因为它现在不仅发送内容,而且还根据内容的类型操纵内容。

我们用来克服这个问题的一种方法是将一组任务分组到一组类/对象中,例如:

abstract class Output
{
    public $content_type = 'text/plain';

    public function _send(){}
}

输出类显然会有更多的方法,但只有与输出内容相关的方法,比如标题等,而不是内容的操作,那么你会有类似的东西:

class HTMLOutput extends Output
{
     public $content_type = 'text/html';
}

以及对内容的操作:

class CSSOutput extends Output
{
    public $content_type = 'text/css';

    public _send()
    {
         if($_SERVER['APP']['Settings']['CSSCompress'] == '1')
         {
             $this->_compress_css();
         }

         parent::_send();
    }

    private function _compress_css()
    {
         $this->content = ; //Some compression lib
    }
}

这是我在创建和组织许多分组类/对象时遵循的主要架构要点。

关于php - 扩展 PHP 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6475224/

相关文章:

php - Zend_Acl : Using a database for persistance, 序列化 acl 对象还是使用特殊模式更好?

php - 从数据库显示

javascript - 使用ajax删除数据

android,如何获取包名?

CSS 绝对位置元素扩展背景

php - 希腊语作为 json 与 php 的问号

c++ - 友元函数和类的定义

android - 扩展类 Activity

java - 我可以在不复制的情况下包装 List 对象吗?

java - 如何在运行时使用反射扩展类