【发布时间】:2011-01-05 17:30:37
【问题描述】:
我正在尝试创建一个分为多个文件的类TestClass。我将它拆分为 3 个文件,其中第一个文件 TestClassPart1.php 具有类 class TestClass { 的开头,最后一个文件 TestClassPart3.php 具有类的右括号。这是3个文件
//TestClassPart1.php
<?php
class TestClass {
public function func1(){
echo "func 1";
}
//TestClassPart2.php
<?php
public function func2(){ echo "func 2"; }
//TestClassPart3.php
<?php
public function func3(){ echo "func 3"; }
}
然后我在名为TestClass.phpso 的实际类文件中重新组合,所以 TestClass.php 只是所有 3 个文件的粘合剂。
<?php
require 'TestClassPart1.php';
require 'TestClassPart2.php';
require 'TestClassPart3.php';
我认为这应该可以,但是当我尝试创建TestClass 的实例并调用其中一个函数时,我得到了parse error, expecting T_FUNCTION' in C:\wamp\www\TestClassPart1.php on line 5。第 5 行是 func1() 的 }
<?php
require 'TestClass.php';
$nc = new TestClass();
$nc->func1();
这不应该吗?我认为你可以将一个类分布在几个文件上没问题。我做错了吗?
【问题讨论】:
-
您为什么要这样做?如果类太大以至于无法在单个文件中进行管理,那么重构或分解成更小的类可能已经成熟了。
-
用 todo 标记类(如果您使用 phpdoc 或等效项)然后在有时间/机会时返回它不是“快速解决方案”吗?即:保持原样,而不是提供解决问题的假象。