Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/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_Oop_Class - Fatal编程技术网

Php 为什么我能';不要将一个类划分为几个文件

Php 为什么我能';不要将一个类划分为几个文件,php,oop,class,Php,Oop,Class,我正在尝试创建一个类TestClass,它被分成几个文件。我把它分成了3个文件,其中第一个文件TestClassPart1.php是类classtestclass{的开始,最后一个文件TestClassPart3.php是类的结束括号。这是3个文件 //TestClassPart1.php <?php class TestClass { public function func1(){ echo "func 1"; } //TestClassPar

我正在尝试创建一个类
TestClass
,它被分成几个文件。我把它分成了3个文件,其中第一个文件
TestClassPart1.php
是类
classtestclass{
的开始,最后一个文件
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
实例并调用其中一个函数时,我得到了
parse error,在第5行
上的C:\wamp\www\TestClassPart1.php中应为T_FUNCTION'。第5行是
func1()的
}


如果必须这样做,可以使用
include_once()
将文件直接插入脚本。

需要
文件时,PHP将解析和评估内容

您的类不完整,因此当PHP解析

class TestClass {    
   public function func1(){ 
      echo "func 1"; 
   }
它无法理解该类,因为缺少结尾}

就这么简单。


并预测你的下一个问题。这个

class Foo
{
    include 'methods.php'
}
也不行


从中(在5中找不到)

不能将类定义拆分为多个文件。您也不能将一个类定义拆分为多个PHP块,除非该拆分在方法声明中。以下操作将不起作用:


但是,允许以下情况:



如果您正在寻找或查看


不久前,作为纯粹的学术兴趣,我也有同样的想法。虽然您可以使用PHP生成PHP,然后由服务器对其进行评估,但不可能直接执行您要求的操作

长话短说:

不用麻烦了 短篇故事:

  • 它增加了分级系统的不安全性,因为控制文件访问变得更加困难
  • 它会降低页面的编译/缓存速度
  • 你真的不需要把一个方形的钉子塞进一个圆孔里

相反:使用适当的OOP实践,将功能划分为类并扩展现有类。

为什么要这样做?如果类太大,无法在单个文件中进行管理,那么重构或分解为更小的类可能已经成熟。用todo标记类(如果您使用phpdoc或等效工具)并在有时间/机会时返回的“快速解决方案”不是吗?i、 e:让它保持原样,而不是提供解决问题的假象。PHP必须格式良好才能执行。在这种情况下,php将是无效的,因为右括号将丢失。我认为这些只是打印错误的代码行。文件实际上是这样构造的?哎哟我会重新思考我是如何编码的,因为我认为这样做没有用。
class TestClass {    
   public function func1(){ 
      echo "func 1"; 
   }
class Foo
{
    include 'methods.php'
}
<?php
class test {
?>
<?php
    function test() {
        print 'OK';
    }
}
?>
<?php
class test {
    function test() {
        ?>
        <?php
        print 'OK';
    }
}
?>