我习惯使用C#
/ Java
/ Python
等语言,其中每个类都有自己的文件,而类为看到其他类,你会导入包含这些类的包。这在php
中如何运作?该文档向您展示了如何创建类,但我不明白它们如何在php
上下文中组合在一起。我知道include语句,它基本上将文件粘在一起。
答案 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)
最简单的方法:
初始化代码:
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个班级时,您可以设置班级自动加载,这样您就不需要编写包含。