php oop - 每个类不同的文件?进口包裹?等等

时间:2011-01-21 11:04:08

标签: php oop

我习惯使用C# / Java / Python等语言,其中每个类都有自己的文件,而为看到其他类,你会导入包含这些类的包。这在php中如何运作?该文档向您展示了如何创建类,但我不明白它们如何在php上下文中组合在一起。我知道include语句,它基本上将文件粘在一起。

5 个答案:

答案 0 :(得分:15)

您可以使用__autoload

function __autoload($class_name) {
    include 'classes/'.$class_name . '.php';
}

因此,将每个类放在classes文件夹中的自己的文件中。当您想要使用该类时,它将包含它。更多信息:http://php.net/manual/en/language.oop5.autoload.php

更新:当我回答此问题时,它完全有效。现在它仍然可以工作,但请记住PHP.net从那以后说:

  

spl_autoload_register()提供了更灵活的替代方案   自动加载类。出于这个原因,使用__autoload()是   气馁,将来可能会被弃用或删除。

答案 1 :(得分:4)

最简单的方法:

  • 在“classes”目录中定义您的类
  • init应用程序如下所示
  • 将类名文件名命名为带有.php后缀的小写类名(MyClass => classes / myclass.php)

初始化代码:

set_include_path ( "./classes" );
spl_autoload_register ();

//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass ();

答案 2 :(得分:2)

从PHP 5.3.0开始,建议您使用spl_autoload_register()函数,因为据说__autoload()将来会被弃用。

使用此功能的简便方法:

1)将每个类文件放入'classes'文件夹

2)在spl_autoload_register()中运行一个匿名函数,它指定你的类文件夹:

spl_autoload_register(function ($class) {
    include 'classes/' . $class . '.php';
});

现在,当您尝试使用尚未在代码中定义的类时,它会在给出错误之前最后一次检查该类文件夹。

答案 3 :(得分:0)

想象一下,你已经在一个名为myObject.php

的文件中用PHP创建了你的对象
<?php

  class myObject
  {
    public function __construct()
    {
      echo "Hello, World";
    }
  }

?>

在另一个文件中,你想使用该对象(让我们称之为myfile.php)。你必须包括你的对象 - 像这样:

<?php

  include("myObject.php");

  $intance = new myObject();

?>

非常简单。

答案 4 :(得分:0)

在PHP中,您可以通过各种方式执行此操作,编译器不会限制您。

您可以在1个文件中使用1个类,在1个文件中包含5个类,使用包含多个文件的1个类...

但通常它仍然是1个文件中的1个类,如果你有很多小文件 - 你也可以将它们放在1个文件夹中。

在1个同名文件中进行1个班级时,您可以设置班级自动加载,这样您就不需要编写包含。