在PHP中加载类的最有效方法

在PHP中加载类的最有效方法,php,object,loading,require,Php,Object,Loading,Require,我是一名c#开发人员,因此我习惯于简单地编译库并将其包含在项目中以供使用。我还没有找到在PHP应用程序中加载不同对象的最佳方法。我不想继续使用require。什么是好方法?您不需要继续使用require。您可以require_once(),它将仅在文件尚未加载时解析该文件 也在PHP中,因为包含在运行时发生,如果条件适当,则在条件的中间可以自由地执行代码>要求()/。 // Only load Class.php if we really need it. if ($somecondition)

我是一名c#开发人员,因此我习惯于简单地编译库并将其包含在项目中以供使用。我还没有找到在PHP应用程序中加载不同对象的最佳方法。我不想继续使用require。什么是好方法?

您不需要继续使用
require
。您可以
require_once()
,它将仅在文件尚未加载时解析该文件

也在PHP中,因为包含在运行时发生,如果条件适当,则在条件的中间可以自由地执行代码>要求()/<代码>。

// Only load Class.php if we really need it.
if ($somecondition) {
  // we'll be needing Class.php
  require_once("Class.php");
  $c = new Class();
}
else // we absolutely won't need Class.php

如果您使用的是PHP5.x,您可能需要。

您可以自动加载类。见:

从该页:

<?php
function __autoload($class_name) {
    include $class_name . '.php';
}

$obj  = new MyClass1();
$obj2 = new MyClass2(); 
?>

请注意,如果您不想使用单一的magic
\uuu autoload
函数,可以使用
spl\u autoload\u register()

该函数将解决您的所有问题。

我过去是C开发者,我可以告诉您,如果您想编写PHP站点,您需要考虑一些不同的东西。您需要记住,每一个不必要的include都会增加额外的资源开销,并且脚本的运行速度会变慢。因此,在添加不必要的内容之前,请三思


回到你的问题,你可以使用,甚至。可能PHAR更接近C#Library,您可以包括一个PHAR库和多个类。

Autoloader,如其他人所述


如果你想更进一步。。。查看(例如)解决问题的方法。

将其放入配置文件(或所有页面中包含的任何文件)

将每个类及其名称放在单独的文件中。

将“
Classes
”替换为您的
Classes文件夹

此问题是搜索“php如何加载类”的第一个堆栈溢出结果,其他提供自动加载示例的答案建议使用
\uu autoload()
请注意,
\uuu autoload()
的使用是无效的,不鼓励使用。使用是

下面的示例代码段来自文档页面:


spl_autoload_register(function ($class_name) {

    include 'classes/' . $class_name . '.php';

});


Zend autoloader是自动加载类的好例子。如果我的对象驻留在不同的文件夹中呢?这会失败吗?还是有处理这些案件的好方法?你必须跟踪。PHP不会为您做这件事,您必须想出一些解决方案。通常,您可以做一些简单的事情,比如类
Foo_Bar
驻留在
Foo/Bar.php
;也就是说,始终将类放在可以由其名称确定的位置。如果不这样做,则需要使用其他方法将类名映射到特定文件。

spl_autoload_register(function ($class_name) {

    include 'classes/' . $class_name . '.php';

});