試圖挖掘面向對象的PHP。我有一個遞歸方法來返回評論和他們的答覆,並將它們編譯成一個平面陣列$comments_list
。面向對象的PHP,從方法返回時數組爲null null
<?php
class RedditPosts
{
public function get_post_ids($from, $limit)
{
// GET POSTS
$list = json_decode(file_get_contents("http://www.reddit.com/$from.json?limit=$limit"));
sleep(2); //after every page request
$post_ids = array();
foreach($list->data->children as $post) {
$post_ids[] = $post->data->id;
}
return $post_ids;
}
}
class RedditComments
{
static $comments_list = array();
public function get_comments($post_id)
{
$comments_object = json_decode(file_get_contents("http://www.reddit.com/comments/$post_id.json"));
sleep(2);
$top_comments = $comments_object[1]->data->children;
//var_dump($top_comments);
self::get_sub_comments($top_comments);
}
static function get_sub_comments($root_comments)
{
foreach($root_comments as $comment)
{
self::$comments_list[] = $comment;
//echo $comment->data->body . "<br/>"
if ($comment->data->replies != '')
{
self::get_sub_comments($comment->data->replies->data->children);
}
}
var_dump(self::$comments_list);
return self::$comments_list;
}
}
/******************************MAIN************************************/
$ps = new RedditPosts();
$my_posts = $ps->get_post_ids("r/learnprogramming", 2);
$cm = new RedditComments();
$my_comments = $cm->get_comments($my_posts[0]);
var_dump($my_comments);
?>
我做了正確的var_dump返回之前,它被填充並且看起來是正確的,但是當我把它叫做法外爲null。可能是一個範圍問題,但我是新來的,無法弄清楚我在哪裏和我碰到了牆。幫助讚賞!
當您使用靜態方法時,它不是真正的OOP。只是你用程序語法編寫的程序代碼,乍一看模仿面向對象的代碼。 –