php类中存在调用函数?

时间:2014-02-13 07:57:18

标签: php rss

<?php
    class MxitRSS {
        function MxitRSS($rsslink,$noofposts = 3)
        {
            //'http://news.google.com/news?ned=us&topic=h&output=rss'
            if($rsslink != NULL)
            {
                $rss = new DOMDocument();
                $rss->load($rsslink);
                $feed = array();
                foreach ($rss->getElementsByTagName('item') as $node) {
                    $item = array ( 
                        'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
                        'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
                        'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
                        'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue,
                    );
                   array_push($feed, $item);
                }

                for($x=0;$x<$limit;$x++) {
                    $randomnum= rand(5, 20);
                    $title = str_replace(' & ', ' &amp; ', $feed[$x]['title']);
                    $link = $feed[$x]['link'];
                    $description = $feed[$x]['desc'];
                    $date = date('l F d, Y', strtotime($feed[$x]['date']));
                    echo '<strong>'.$title.'</strong><br />';
                    echo '<i>Posted on '.$date.'</i>';
                    echo '<br/><br/>'.$description.'<br/>';
                    echo '<br/><a href=index.php?page=article&id='.$randomnum.'><i>read more</i></a><br/>';
                }
            } else {  }
        }
    }
?>

调用功能

<?php
    include('rss.php');
    $this -> MxitRSS('http://news.google.com/news?ned=us&topic=h&output=rss',3);
?>

我试图在另一个页面上调用上面的函数,但它无法正常工作。我是php的新手。我正在做的很好吗?

2 个答案:

答案 0 :(得分:0)

使用类的正确方法是首先实例化它。但是因为在你的情况下classname等于methodname,你的方法是一个构造函数,并且会在类实例化后运行。 (如果你的php低于5.3。这个用法已被弃用,而__construct是命名构造函数的新方法)

$myClass = new MxitRSS('http://news.google.com/news?ned=us&topic=h&output=rss',3);

答案 1 :(得分:0)

实际上,因为你的类与函数同名,所以函数将作为构造函数,所以Volkan Ulukuts的回答将调用该函数两次,一次没有URL,一次调用。我不认为你想要那个。

下面应该做你想做的事。

<?php
   include('rss.php');
   new MxitRSS('http://news.google.com/news?ned=us&topic=h&output=rss',3);
?>

值得注意的是,如果您将“MxitRSS”功能的名称更改为“__construct”,它的工作方式将完全相同,但会使IMO更加清晰。