【问题标题】:WordPress: Error while importing Trait inside ClassWordPress:在类中导入特征时出错
【发布时间】:2022-01-08 14:23:24
【问题描述】:

我正在使用 WordPress rest api,并且我创建了一个自定义主题,并且我想使用 OOP 进行编码。我在类中导入 Trait 时遇到问题。

代码如下:

MyController 类

<?php

namespace Controllers;

use Controllers\RespondsWithHttpStatus;

class MyController {
  use RespondsWithHttpStatus;

  public function __construct() {}

  public function hello() {
    return "hello world";
  }

}

RespondsWithHttpStatus 特征

<?php

namespace Controllers;

trait RespondsWithHttpStatus
{

    protected function success($message, $data = [], $status = 200)
    {
        return array([
            'success' => true,
            'data' => $data,
            'message' => $message,
            'timestamp' => current_time( 'timestamp', 1)
        ], $status);
    }


    protected function failure($message, $status = 422)
    {
        return array([
            'success' => false,
            'message' => $message,
            'timestamp' => current_time( 'timestamp', 1)
        ], $status);
    }

}

functions.php

<?php

require_once('Controllers/MyController.php';

add_action('rest_api_init', 'greet');

 function greet() {
    register_rest_route('greet/v1', 'greet', array(
        'methods' => WP_REST_SERVER::READABLE,
        'callback' => 'greeting'
    ));
 }

 function greeting() {
     $myController = new MyController();
     return $myController->hello();
 }

导致问题的原因是 MyController 类中的“使用 RespondsWithHttpStatus”字段,我尝试使用命名空间和使用关键字,但没有运气。

【问题讨论】:

  • 您真的遇到错误了吗?您是否也在某处包含特征文件代码?
  • 开启 WP_DEBUG。我的第二个问题是您是否包含未显示的特征。 PHP 不会在文件系统中搜索任何文件,除非你构建了一个自动加载器。
  • PHP 与文件系统的关系经常被误解,可能是因为大多数现代代码都有一个自动加载器,而大多数代码示例都假设您正在使用它。我会调查的。它甚至可以在 WordPress 上下文中使用,但我强烈建议您查看命名空间。
  • 具体来说,你需要requireinclude或者类似的那个文件。
  • 继续发布您自己的答案。我在 iPad 上,编写代码更难。

标签: php wordpress wordpress-rest-api


【解决方案1】:

在 MyController.php 中使用 require_once('RespondsWithHttpStatus.php'); 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2017-02-25
    • 2013-12-06
    • 2016-11-29
    • 2012-04-20
    • 2014-11-26
    • 2015-02-14
    • 2016-04-01
    • 2020-07-15
    • 2017-04-22
    相关资源
    最近更新 更多