我是一名c#开发人员,所以我习惯于简单地编译一个库并将其包含在项目中以供使用。我还没有找到在PHP应用程序中加载不同对象的最佳方法。我不想继续使用require。采取什么好方法?
答案 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网站,你需要思考一下。您需要记住,每个不必要的包含都会增加额外的资源开销,并且您的脚本运行速度会变慢。所以在添加不必要的包含之前要三思而后行。
回到您的问题,您可以使用include,require,autoload甚至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_register
是suggested instead。
下面的示例摘录来自文档页面:
spl_autoload_register(function ($class_name) {
include 'classes/' . $class_name . '.php';
});