php oop-每个类都有不同的文件?进口包装?等
我习惯于使用php oop-每个类都有不同的文件?进口包装?等,php,oop,Php,Oop,我习惯于使用C#/Java/Python等语言,其中每个类都有自己的文件,对于类要查看其他类,您需要导入包含这些类的包。这在php中是如何工作的?文档向您展示了如何创建类,但我不明白它是如何在php上下文中组合在一起的。我知道include语句,它基本上将文件粘在一起。想象一下,您一直在一个名为myObject.PHP的文件中用PHP创建对象 <?php class myObject { public function __construct() {
C#
/Java
/Python
等语言,其中每个类都有自己的文件,对于类要查看其他类,您需要导入包含这些类的包。这在php
中是如何工作的?文档向您展示了如何创建类,但我不明白它是如何在php
上下文中组合在一起的。我知道include语句,它基本上将文件粘在一起。想象一下,您一直在一个名为myObject.PHP的文件中用PHP创建对象
<?php
class myObject
{
public function __construct()
{
echo "Hello, World";
}
}
?>
在另一个文件中,您希望使用该对象(我们称之为myfile.php)。您必须包括您的对象-如下所示:
<?php
include("myObject.php");
$intance = new myObject();
?>
非常简单。在PHP中,您可以通过各种方式完成,编译器不会限制您 您可以在1个文件中有1个类,在1个文件中有5个类,在多个文件中有1个类,使用include 但通常情况下,它仍然是一个文件中的一个类,如果你有许多小类,你也可以将它们放在一个文件夹中
当使用相同的名称在一个文件中创建一个类时,您可以设置类自动加载,这样您就不需要编写包含项。您可以使用u autoload
function __autoload($class_name) {
include 'classes/'.$class_name . '.php';
}
因此,将每个类放在classes文件夹中自己的文件中。当您想要使用该类时,它将包含它。更多信息:
更新:当我回答这个问题时,它是完全有效的。现在它仍然有效,但请记住PHP.net自那时起就说过:
为客户提供了更灵活的选择
自动加载类。因此,使用_autoload()是非常必要的
不鼓励,将来可能会被弃用或删除
最简单的方法:
- 在“classes”目录中定义类
- 初始化应用程序,如下所示
- 用带有.php后缀的小写类名命名类文件名(MyClass=>classes/MyClass.php)
set_include_path ( "./classes" );
spl_autoload_register ();
//class is automatically loaded from ./classes/myclass.php
$object_instance = new MyClass ();
从PHP 5.3.0开始,建议您使用spl_autoload_register()函数,因为据说u autoload()在将来某个时候会被弃用 使用此功能的简单方法: 1) 将每个类文件放入“类”文件夹中 2) 在spl_autoload_register()中运行一个匿名函数,该函数指定类文件夹:
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.php';
});
现在,当您尝试使用尚未在代码中定义的类时,它将在给您一个错误之前最后一次检查该类文件夹。可能重复(tipp)搜索phpper中的自动加载和代码约定。通常,我发现将每个类放在自己的文件中是非常明智的。。。但是使用自动加载器而不是java的import@middaparka:就在前几天,我成了一个完全脱离主题(虽然只是短暂的)讨论的主题。@middaparka:开始讨论的评论被标记删除,但是在meagar的回复中可以找到上下文残留。除非你需要管理一个比你的代码长的包含列表。@Mchl:哦,这很简单,将include放在自己的include文件中并包含它:PAlso看一看:这很酷,但当您希望自己的自动加载器具有自己的名称时,最好使用它,如示例#1所述:在这种情况下#自动加载器就足够了。您不能将一个类拆分为多个文件。例如,请参见此处: