【问题标题】:How to avoid error when including multiple times [duplicate]包含多次时如何避免错误[重复]
【发布时间】:2023-03-09 21:55:01
【问题描述】:

在这个 PHP 脚本中,我多次调用模型加载器函数。我希望主模型(所有模型的父模型)只包含一次,但如果我不调用任何模型,则不包含在内。

此外,模型加载器将始终包含在内。因此,如果我不调用任何模型,我不希望包含主模型。

我怎样才能做到这一点?

脚本.php

include("model-loader.php");

// Returns the models instances.
$Model1 = loadModel("Model1");
$Model2 = loadModel("Model2");

模型加载器.php

function loadModel($name) {
    include("MasterModel");
    return new $name();
}

【问题讨论】:

  • 您还需要小心包含在函数内部,是否有特殊原因要这样做而不是将整个 loadMode() 函数包含在包含中。
  • 请注意include 允许包含的脚本返回调用脚本。这意味着您可以return new class() extends MakeModel {} 或其他任何内容,然后是return include 'MakeModel.php'; 或您的函数中的任何内容。
  • 此外,自动加载器和use 语句将实现所需的相同效果(除非在某处使用,否则不会“包含”文件)。

标签: php


【解决方案1】:

include 每次调用时都会包含该文件。

您应该改用include_once。即使您多次运行同一个函数,它也只会包含一次脚本。

模型加载器.php

function loadModel($name) {
    // Will only be included once.
    include_once("MasterModel");
    return new $name();
}

您也可以使用require_once。因此,如果路径没有结果,require_once 将引发致命错误。 include_once 只会发出警告。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多