【问题标题】:Include PHP Library on Drupal 8在 Drupal 8 上包含 PHP 库
【发布时间】:2019-08-06 09:41:14
【问题描述】:

我有一个类,我希望能够在 CMS 上使用它,而不是依赖于任何模块,例如因为我想通过 git 对其进行更新并且不仅可以使用它在 Drupal 项目中:

<?php

namespace MyPackage;

class MyClass {

    public static function myFunction($message) {
        file_put_contents('./file.log', $message, FILE_APPEND);
    }

}

该类位于 drupal 网站的 library/ 文件夹中,其路径为:/libraries/MyPackage/MyClass.php 然后我尝试在某处使用它,例如,

\MyPackage\MyClass::myFunction("hey from myfunction!");

但是无法访问该类:

Error: Class 'MyPackage\MyClass' not found in ...

还尝试了其他包路径约定,将类放在

/libraries/mypackage/src/MyPackage/MyClass.php

没有运气。

我应该把我的 PHP 类放在哪里?路径有问题?命名约定有问题吗?我几乎尝试了所有方法,当然除了正确的方法。

【问题讨论】:

    标签: php symfony class drupal drupal-8


    【解决方案1】:

    你应该试试

    use MyPackage\MyClass\MyClass::myFunction("Hey from my function");
    

    MyPackage\MyClass 是您的命名空间,MyPackage\MyClass\MyClass 是您的完整类引用。

    【讨论】:

    • 谢谢Muhammad,我在这个问题上犯了一个错字,包裹实际上是namespace MyPackage;我更正并尝试了你的建议。仍然无法正常工作。
    【解决方案2】:

    似乎在 Drupal 8 上执行此操作的唯一方法是通过 composer 依赖管理器,它由以下步骤组成:

    1. Creating your library with composer
    2. Compile and upload it on Packagist
    3. Use on your Drupal instance 作为其他依赖项

    【讨论】:

    • 这是正确的方法,但您始终可以使用 github 或任何其他 VCS。您所要做的就是在 Drupal 的 composer.json 中的 repositories 下列出它,并将其与 composer require 一起使用。您甚至可以像这样使用该库而无需将其上传到任何地方。可以在repositories下给出本地路径@
    • 这很有趣,我想使用“本地”方法。现在我解决了将库作为模块源包含在内的问题,但我会按照您的建议进行学习。
    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 2020-03-14
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多