WordPress:在 Class 中导入 Trait 时出错
WordPress: Error while importing Trait inside Class
我正在使用 WordPress rest api,我创建了一个自定义主题,我想使用 OOP 进行编码。我在 Class.
中导入特征时遇到问题
代码如下:
我的控制器class
<?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 Class 中的“use RespondsWithHttpStatus”字段,我尝试使用命名空间和 use 关键字,但没有成功。
在 MyController.php 中使用 require_once('RespondsWithHttpStatus.php');
解决了问题。
我正在使用 WordPress rest api,我创建了一个自定义主题,我想使用 OOP 进行编码。我在 Class.
中导入特征时遇到问题代码如下:
我的控制器class
<?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 Class 中的“use RespondsWithHttpStatus”字段,我尝试使用命名空间和 use 关键字,但没有成功。
在 MyController.php 中使用 require_once('RespondsWithHttpStatus.php');
解决了问题。