【发布时间】:2013-06-29 18:53:39
【问题描述】:
我有一种情况,我正在创建一个控制器文件,它回显要在客户端与 ajax 一起使用的 json 输出:
echo json_encode($response);
另一个文件中的主类,除其他外,从 CMS 中获取所有设置变量。
现在,控制器文件有一个从 API 生成请求的类,但是 (username, id, count, etc.) 类中的设置变量是硬编码的,因为我无法弄清楚如何从主类中获取它们其他文件。通过硬编码设置,控制器文件按预期创建并回显 json 输出。它只需要主类中的动态变量。
请原谅我缺乏对 OOP 的知识和用法。我一直在尝试使用这样的结构,再次尝试将用户名和其他变量从主类获取到单独文件中的另一个类中。
** EDIT ** 根据@Dave Just 的评论重新考虑这一点,因为它更有意义。因此,如果我将 api_request 函数移动到 mainClass 和 return 响应中,我可以获得我需要的变量并且请求仍然有效。所以这会让我问 - 我怎样才能在单独的文件中回显来自 api_request 函数的$response?那个带有 json 的单独文件是我用于 ajax 脚本的文件。
class mainClass {
public $username;
function __construct() {
...
}
public function api_settings( $username ) {
...
}
}
$main_class = new mainClass;
$main_class->api_settings();
// OR
$main_class->username;
api-call.php
class apiCall extends mainClass {
public $username;
function __construct() {
parent::__construct;
...
}
public function api_request() {
...
$return = $api_auth->request(
'GET',
$api_auth->url( '/cms-plug' ),
array(
//where I need to be able to grab the $username from the main class
'username' => 'joebob'
)
);
echo json_encode($response);
}
}
$api_class = new apiCall;
【问题讨论】:
-
底线:你打破了
SRP和LSP -
并且
api_request()应该做绑定而不是发送(不要回显它,而是返回),因为它会导致方法一次做两件事,这是一种不好的做法。 -
这很有意义@DaveJust。请参阅上面的编辑,因为处理新问题可能更容易和更好的做法......?