[英]How to use PHP class extends?
題 :
我無法弄清楚如何使用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');
我覺得我需要更多有關類和對象作用域的內容... :)
只需為此切換“ getPost”方法聲明:
static function getPost($args){
私有方法意味着只有該類才能執行該方法。 靜態方法意味着可以在不實例化對象的情況下調用它,例如您嘗試使用雙冒號進行的操作。 class::method(args)
。
僅出於完整性考慮,公共職能是中間立場。 必須實例化一個對象以供您調用(通過$object->method(args)
),但是該對象可用於已導入該類的任何文件
附帶說明:我還想補充一點,要使方法用作靜態方法,仍需要“包含”該方法! 我為使用“進口”一詞表示歉意,最近我還在使用許多其他語言!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.