Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关于组织课程和命名课程的问题_Php_Naming - Fatal编程技术网

Php 关于组织课程和命名课程的问题

Php 关于组织课程和命名课程的问题,php,naming,Php,Naming,我正在编写一组类:RAR、ZIP和Trip。它们都有一个共同的兴趣:它们是归档格式。因此,我最初考虑这样做: 1) 编写一个基本抽象类 abstract class Archive {} 并将其放在“libraries/archive/archive.php”中 2) 编写zip、rar和trip类 class Archive_Zip extends Archive {} 并将它们放在“libraries/archive/zip.php”中 3) 像这样访问特定类(例如Zip) $this-

我正在编写一组类:RAR、ZIP和Trip。它们都有一个共同的兴趣:它们是归档格式。因此,我最初考虑这样做:

1) 编写一个基本抽象类

abstract class Archive {}
并将其放在“libraries/archive/archive.php”中

2) 编写zip、rar和trip类

class Archive_Zip extends Archive {}
并将它们放在“libraries/archive/zip.php”中

3) 像这样访问特定类(例如Zip)

$this->archive->zip->...
这是我最初的做法。然而,你认为这是一个好方法吗?我应该一开始就把它们抽象出来吗?仅仅编写一个“libraries/zip.php”文件(以及其他单独编写的文件)有哪些优点和缺点

你对我的方法有什么建议或论点吗?我做过什么坏事吗?

因为#3并不是真正从#1或#2开始的。另一种方法是在需要时实例化对象。。像这样:

$archive = new Archive_Zip();
完成了。没有必要把它复杂化。

因为#3实际上并不遵循#1或#2,另一种方法就是在需要时实例化对象。。像这样:

$archive = new Archive_Zip();

完成了。无需将其复杂化。

抽象类的主要优点是可以在整个代码中使用公共接口。然后,您就可以将实现切换到另一种归档格式,而无需更改一堆代码。我很少使用PHP,所以这个答案是基于一般的OOP原则。看来achives将是该方法的一个很好的候选者,因为他们共享一组共同的操作

抽象类的主要优点是可以在整个代码中使用公共接口。然后,您就可以将实现切换到另一种归档格式,而无需更改一堆代码。我很少使用PHP,所以这个答案是基于一般的OOP原则。看来achives将是该方法的一个很好的候选者,因为他们共享一组共同的操作

就我个人而言,抽象类没有太多用处。充其量,它们似乎是对您自己的代码的检查,确保您在子类中定义了一组方法


继承本身会对您有好处,如果您的子类有许多通用的方法,那么拥有一个基本归档类也会有所帮助。

就我个人而言,我对抽象类没有太多用处。充其量,它们似乎是对您自己的代码的检查,确保您在子类中定义了一组方法


继承本身对您很有好处,如果您的子类有许多通用的方法,那么拥有一个基本归档类也会有所帮助。

这取决于您的实现。您会使用策略模式来确定使用哪种压缩算法吗?如果压缩算法可以在其他代码位之间互换使用,则对其进行抽象

它们是否应该遵守相同的合同并共享相同的功能?可能这是一个很好的抽象用法


此外,如果它只是为了可读性而帮助您创建逻辑关联,那么就去做吧。这是我的看法。

这取决于您的实现。您会使用策略模式来确定使用哪种压缩算法吗?如果压缩算法可以在其他代码位之间互换使用,则对其进行抽象

它们是否应该遵守相同的合同并共享相同的功能?可能这是一个很好的抽象用法


此外,如果它只是为了可读性而帮助您创建逻辑关联,那么就去做吧。这就是我的看法。

我喜欢Zend框架方法

档案:

lib/Archive.php
lib/Archive/Zip.php
lib/Archive/Rar.php
代码:


见此:

我喜欢Zend框架方法

档案:

lib/Archive.php
lib/Archive/Zip.php
lib/Archive/Rar.php
代码:


请参阅:

在这个问题中,拥有存档基类的好处在于,它应该真正指导您为客户端代码定义一组公共方法来操作存档文件,而不考虑存档格式。(做同样事情的另一种方法是定义一个存档接口,所有其他类都实现了这个接口。但我怀疑最终会在所有类中产生一些通用代码;将存档作为基类为您提供了一个很好的放置位置。)

在这个问题中,拥有存档基类的好处是,它真的应该指导您为客户端代码定义一组公共方法来操作归档文件,而不考虑归档格式。(做同样事情的另一种方法是定义一个存档接口,所有其他类都实现了这个接口。但我怀疑最终会在所有类中都有一些通用代码;将存档作为基类为您提供了一个很好的放置位置。)

那么“$zip=new Archive\u-zip”呢?不需要包含任何内容(自动延迟加载)?“$zip=new Archive_-zip;”怎么样?不需要包含任何内容(自动延迟加载)?