【问题标题】:Autoloading libraries自动加载库
【发布时间】:2016-04-27 04:29:19
【问题描述】:

我正在使用

function __autoload($class_name) {
    $file_name = str_replace("\\", DIRECTORY_SEPARATOR, $class_name) . '.php';
    include $file_name;
}

加载我的课程。一切都很完美,但现在我想使用一个具有不同命名约定的外部库 Services_Twilio(我将库存储在 /code/twilio/Services/Twilio.php 下)

现在 PHP 说 警告:include(Services_Twilio.php): failed to open stream: 我该如何处理这些情况?我应该排除这个类吗?我还发现图书馆有它自己的自动加载器。

【问题讨论】:

  • 使用Composer,它是一个PHP项目包管理器,处理所有包的自动加载/等。
  • 可以用composer来加载我自己的库吗?没有从 packagegist 获得一切?
  • 你必须为作曲家编写库,你可以自行托管它们,或者将它们从 github/gitlab/etc 中提取出来。

标签: php autoload


【解决方案1】:

您应该通过包含它来使用为包提供的自动加载器。

您自己的自动加载器应该让他们的自动加载器有机会行动。你应该这样做:

function __autoload($class_name) {
    $file_name = str_replace("\\", DIRECTORY_SEPARATOR, $class_name) . '.php';

    if (file_exists($file_name)) {
        include $file_name;
    }
}

如果您的自动加载器找不到文件,它什么也不做。因此,您收到的警告将消失。另外包的自动加载器可以启动。

你也可以考虑http://php.net/manual/de/function.spl-autoload-register.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-12
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 2020-04-30
    相关资源
    最近更新 更多