【发布时间】:2012-03-07 08:16:45
【问题描述】:
当您手动包含一个 PHP 类时,您可以在当前脚本运行时执行它,对吗?然后你可以决定,如果一个条件匹配你加载它,如果不匹配你不加载。像这样:
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
include '../../../Whatever/SanitizeUserInput.class.php';
SanitizeUserInput::sanitize($_POST['someFieldName']);
}
但是假设我在这个类中使用了autoload 功能。会在开始时有效加载还是仅在使用时才加载?
我的意思是,我是否应该只在我 100% 确定将在任何脚本中使用的类中添加 __autoload 函数(例如数据库连接、会话管理等? )?
谢谢
【问题讨论】:
-
将与@Timur 建议使用spl_autoload_register 一起使用,因为它似乎更灵活,从我的角度来看,我不明白为什么自动加载效率应该更低......这个想法是只加载一个类当基于您的自定义逻辑创建实例时......所以您应该擅长它
-
是否使用自动加载也是简洁设计的问题。
-
@KingCrunch - 你认为哪一个是干净的?
-
保持“我的班级在哪里?”取决于想要使用该类的自动加载器而不是代码。例如,您使用
include,迟早会导致“类已定义”。 -
@martinstoeckli 使用自动加载更好,因为类的可移植性更好,而且更干净,因为您不需要在文件中写入所有
include(..)。
标签: php class include autoload