如何使用PHP类扩展?

时间:2014-02-28 02:06:43

标签: php class

问题:

我无法想象如何在PHP中使用类扩展...即使阅读php.net网站和一些例子,也有一些我无法理解或遗漏的东西!

你能告诉我我做错了吗?

Api.php

class Api
{

    public static $action = '';


#    public function __construct()
#    {
#    }

    public function actionCaller ($action,$args=NULL)
    {
        return self::$action_($args);
    }
}

ApiForum.php

class ApiForum extends Api
{

    #private static $forum;

    public function __construct()
    {
        #self::$forum = new Api();
    }

    private function getPost ($args)
    {
        echo 'executed.';
        #return "get forum post $args";
    }

}

test.php的

<?php
error_reporting(E_ALL);
ini_set('display_errors', true);


require_once('config.php');
require_once('classes/_Autoload_.php');


echo Api::actionCaller('forum')->getPost();

结果:

PHP Fatal error:  Call to a member function getPost() on a non-object in /var/www/html/api.example.com/test.php on line 10

请跟我一致;)

CL

解答:

好的,它现在正在运作!感谢所有...有不止一个问题,结果如下:

Api.php

class Api
{

#    public function __construct()
#    {
#    }


    public function actionCaller ($action,$args=NULL)
    {
        return self::$action($args);
    }

    public function forum ()
    {
        return new ApiForum();
    }


}

ApiForum.php

class ApiForum extends Api
{

#    public function __construct()
#    {
#    }



    public static function getPost ($args)
    {
        echo 'executed.';
    }

}

test.php的

error_reporting(E_ALL);
ini_set('display_errors', true);


require_once('config.php');
require_once('classes/_Autoload_.php');


echo Api::actionCaller('forum')->getPost('test');

我觉得我需要更多关于类和对象范围的阅读......:)

1 个答案:

答案 0 :(得分:1)

只需为此输入“getPost”方法声明:

static function getPost($args){

私有方法仅表示该类可以执行该方法。静态方法意味着可以在没有实例化对象的情况下调用它,就像您尝试使用双冒号一样。 class::method(args)

为了完整起见,公共职能是中间立场。必须实例化一个对象才能调用它(通过$object->method(args)),但它可用于导入该类的任何文件

修改

只是旁注:我还想添加一个方法作为静态方法,它仍然需要“包含”!我为使用“导入”这个词道歉,我最近一直在玩很多其他语言!