我正在尝试使用面向对象编程和智能模板创建php站点。
只是按书来说明我应该如何构建结构?
我见过有人制作包含文件夹和Classes文件夹,有些人把Classes放在Includes文件夹中,哪种方式正确? 什么是面向对象编程的包含文件夹?
答案 0 :(得分:3)
您应该使用Autoloading加载课程。
此外,您的自动加载器应符合PSR-0标准(由...编写) PHP标准工作组)
提供符合PSR-0标准的自动加载器示例答案 1 :(得分:2)
没有正确的方法,也没有教科书标准。您喜欢的PHP项目中的文件夹结构由您自行组织。不同的人遵循不同的惯例。
也许有人称之为includes
,因为它包含通常包含在大多数其他主要脚本中的文件,有些人称之为classes
,因为它由类文件组成。由于类文件是包含文件,因此他们可能会classes
成为incliudes
的子文件夹。但这一切都是完全主观和优惠的;它绝不是标准。
答案 2 :(得分:1)
根据说,没有标准文件夹,但includes/
是相当主流的,有些人可能认为它是事实上的标准。这真的取决于你。
答案 3 :(得分:0)
只有一条规则:它必须有意义。认真。代码必须易读且易于维护。最顶层文件夹的名称与此几乎没有关系。如何在该文件夹下组织课程更为重要。作为个人偏好,我会使用“类”或“模型”,因为这就是文件的内容。 “包含”让我想起程序编程时代。
但是,应用程序应遵循的更为重要的原则是MVC(模型 - 视图 - 控制器)体系结构。我建议你阅读这个主题。还有一些很好的框架,因此您不需要编写样板代码。
框架的问题在于,您通常无法选择命名文件夹,因为他们已经对“正确”的做事方式抱有强烈的信念。这也使你提到的命名问题不太相关。
对于MVC应用程序,类的作用通常只是封装应用程序的数据模型。这就是为什么我经常使用“model”作为文件夹的名称,而不是类,也不包括。
答案 4 :(得分:0)
在为OO PHP构建包含时,我会从Java中获取灵感。对于每个依赖于另一个类的类,请在文件顶部使用以下语句:
require_once 'classFolder/SomeClass.php'
此语句将检查文件是否已包含在内,如果已包含,则不再包括(要求)该文件。如果找不到所需的文件,但会导致致命的E_COMPILE_ERROR级别错误。换句话说,它将暂停脚本,而include_once()只会发出警告(E_WARNING),允许脚本继续。
使用此结构意味着所有类文件都指定了所有必需的包含,因此会有一些重复,例如某些类可能需要_once相同的文件。但是由于require_once的工作方式,这会带来很少的开销,并使代码具有很强的变化能力。
希望这有帮助。