将变量从一个 class 传递到 PhP 中的另一个
Passing variables from one class to an other in PhP
你好,我正在尝试构建我的第一个 restful Web 服务,我正在使用 lorna jane mitchell 博客中的说明。
如果请求通过这个 Url : http://localhost:8888/lorna/index.php/tree/getpath?node_id=75
我调用函数 getpath 传递 node_id
函数获取路径如下所示:
class NestedSet
{
public function getPath($id) {
$sql = "SELECT p." . $this->pk . ", p." . $this->name . " FROM ". $this->table . " n, " . $this->table . " p WHERE n.lft BETWEEN p.lft AND p.rgt AND n." . $this->pk ." = " . $id . " ORDER BY p.lft;";
$result = $this->db->query($sql);
if ($result->num_rows == 0) {
return $this->error(1, true);
}
$path = array();
$i = 0;
while ($row = $result->fetch_assoc()) {
$path[$i] = $row;
$i++;
}
return $path;
}
}
现在我想将此变量 $path 传递给 class JsonView,如下所示:
class JsonView extends ApiView {
public function render($path) {
header('Content-Type: application/json; charset=utf8');
echo json_encode($path);
return true;
}
}
class ApiView {
protected function addCount($data) {
if(!empty($data)) {
// do nothing, this is added earlier
} else {
$data['meta']['count'] = 0;
}
return $data;
}
}
关于如何通过此 JsonView 传递变量 $path 或任何其他变量的任何想法 Class。
非常感谢您的宝贵时间:)
更新这是创建嵌套 class 对象的代码
public function getAction($request) {
$data = $request->parameters;
if(isset($request->url_elements[2])) {
switch ($request->url_elements[2]) {
case 'getpath':
$id = $data['node_id'];
$nested = new NestedSet();
$nested->getPath($id);
$api = new JsonView();
$api->render($path);
break;
default:
# code...
break;
}
} else {
$nested = new NestedSet();
echo $nested->treeAsHtml();
}
}
只需创建 JsonView 对象,然后使用该对象调用函数渲染。
$api = new JsonView;
$api->render($path);
你好,我正在尝试构建我的第一个 restful Web 服务,我正在使用 lorna jane mitchell 博客中的说明。
如果请求通过这个 Url : http://localhost:8888/lorna/index.php/tree/getpath?node_id=75 我调用函数 getpath 传递 node_id 函数获取路径如下所示:
class NestedSet
{
public function getPath($id) {
$sql = "SELECT p." . $this->pk . ", p." . $this->name . " FROM ". $this->table . " n, " . $this->table . " p WHERE n.lft BETWEEN p.lft AND p.rgt AND n." . $this->pk ." = " . $id . " ORDER BY p.lft;";
$result = $this->db->query($sql);
if ($result->num_rows == 0) {
return $this->error(1, true);
}
$path = array();
$i = 0;
while ($row = $result->fetch_assoc()) {
$path[$i] = $row;
$i++;
}
return $path;
}
}
现在我想将此变量 $path 传递给 class JsonView,如下所示:
class JsonView extends ApiView {
public function render($path) {
header('Content-Type: application/json; charset=utf8');
echo json_encode($path);
return true;
}
}
class ApiView {
protected function addCount($data) {
if(!empty($data)) {
// do nothing, this is added earlier
} else {
$data['meta']['count'] = 0;
}
return $data;
}
}
关于如何通过此 JsonView 传递变量 $path 或任何其他变量的任何想法 Class。 非常感谢您的宝贵时间:)
更新这是创建嵌套 class 对象的代码
public function getAction($request) {
$data = $request->parameters;
if(isset($request->url_elements[2])) {
switch ($request->url_elements[2]) {
case 'getpath':
$id = $data['node_id'];
$nested = new NestedSet();
$nested->getPath($id);
$api = new JsonView();
$api->render($path);
break;
default:
# code...
break;
}
} else {
$nested = new NestedSet();
echo $nested->treeAsHtml();
}
}
只需创建 JsonView 对象,然后使用该对象调用函数渲染。
$api = new JsonView;
$api->render($path);