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

时间:2011-07-06 18:03:23

标签: php object loading require

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

8 个答案:

答案 0 :(得分:2)

您无需继续使用require。你可以require_once()只解析尚未加载的文件。

同样在PHP中,由于包含发生在运行时,如果合适,您可以在条件中间require_once()自由。

// 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

答案 1 :(得分:2)

如果您使用的是PHP 5.x,则可能需要autoloading

答案 2 :(得分:1)

过去我是C#开发人员,我可以告诉你,如果你想编写PHP网站,你需要思考一下。您需要记住,每个不必要的包含都会增加额外的资源开销,并且您的脚本运行速度会变慢。所以在添加不必要的包含之前要三思而后行。

回到您的问题,您可以使用includerequireautoload甚至phar。可能PHAR更接近C#库,您可以包含一个包含多个类的PHAR库。

答案 3 :(得分:1)

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

function __autoload($class_name) {
    require_once "Classes" . $class_name . '.php';
}

将每个类放在单独的文件中,并附上其名称 将“Classes”替换为classes folder

答案 4 :(得分:0)

您可以自动加载课程。参见:

从该页面开始:

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

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

请注意,如果您不想使用单一魔术spl_autoload_register()功能,则可以使用__autoload

答案 5 :(得分:0)

autoloader将解决您的所有问题。

答案 6 :(得分:0)

Autoloader,正如其他人所说。

如果你想更进一步......看看Kohana(例如)解决问题的方式。

答案 7 :(得分:0)

此问题是搜索“ php如何加载类”的第一个堆栈溢出结果,其他提供自动加载示例的答案则建议使用__autoload()请注意,deprecated as of PHP 7.2__autoload()的使用,不建议使用。使用spl_autoload_registersuggested instead

下面的示例摘录来自文档页面:


spl_autoload_register(function ($class_name) {

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

});