覆盖基类php中的函数

时间:2015-04-30 11:27:16

标签: php

在以下实例中,如下所示?

这是我们的基类

<?php

class baseService 
{
  public function __construct() 
  {
    //constructor code
  }

  public function handleRawRequest($_SERVER, $_GET, $_POST) 
  {
    $this->handleRequest($url, $method, $parameters, $requestBody, $accept);
  }

  public function handleRequest($url, $method, $parameters, $requestBody, $accept) 
  {
    switch($method) 
    {
      case 'GET':
        $this->performGet($url, $parameters, $requestBody, $accept);
        break;
      default:
        $this->notImplementedResponse();
    }
  }

  public function performGet($url, $parameters, $requestBody, $accept) 
  {
    $this->methodNotAllowedResponse();
  }

  protected function methodNotAllowedResponse() 
  {
    // out put some sort of 405 (Method Not Allowed)
  }
}
?>

我们将此扩展到特定服务以提供某些功能

<?php    
    require "baseService.php";

class betterService extends baseService 
{
  public function __construct() 
  {
    // stuff
  }

  public function performGet($url, $parameters, $requestBody, $accept) 
  {
    //do some stuff
  }
}
?>

然后使用另一个php文件,我们创建了一个更好的服务,并发送一些请求,如:

<?php
    require "NameRestService.php";

$service = new NameRestService();
$service->handleRawRequest($_SERVER, $_GET, $_POST);
?>

我们可以做一些事情还是返回的方法不允许消息? 如果它确实是第二个如何改变它来做事?

1 个答案:

答案 0 :(得分:-1)

用self ::替换$ this来从调用类中执行该方法。

self::performGet(...