问题:
我无法想象如何在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');
我觉得我需要更多关于类和对象范围的阅读......:)
答案 0 :(得分:1)
只需为此输入“getPost”方法声明:
static function getPost($args){
私有方法仅表示该类可以执行该方法。静态方法意味着可以在没有实例化对象的情况下调用它,就像您尝试使用双冒号一样。 class::method(args)
。
为了完整起见,公共职能是中间立场。必须实例化一个对象才能调用它(通过$object->method(args)
),但它可用于导入该类的任何文件
只是旁注:我还想添加一个方法作为静态方法,它仍然需要“包含”!我为使用“导入”这个词道歉,我最近一直在玩很多其他语言!