2017-03-16 8 views
1

私はPHPで初心者です!私は1つのパラメータ($ _SERVER)と別のクラス(GetRequest)を持つコンストラクタを持ち、要求を持つクラス(要求)を作成するタスクがあります。私のコードは次のとおりです。以下れるPHP - init親varialbles(コンストラクタ付き)

<?php 

class Request{ 
    protected $server; 

    public function __contruct($ser){ 
     $this->server = $ser; 
    } 

    public function getMethod(){ 
     return $this->server['REQUEST_METHOD']; 
    } 

    public function getPath(){ 
     return $this->server["PHP_SELF"]; 
    } 

    public function getURL(){ 
     return 'http://'.$this->server['HTTP_HOST'].$this->server['REQUEST_URI']; 
    } 

    public function getUserAgent(){ 
     return $this->server['HTTP_USER_AGENT']; 
    } 
} 

class GetRequest extends Request{ 

    function __contruct($ser){ 
     parent::__construct($ser); 
    } 

    //Return query string params in JSON format 
    function getData(){ 
     $keywords = preg_split("/[\s,=,&]+/", $this->server['QUERY_STRING']); 
     $arr=array(); 
     for($i=0;$i<sizeof($keywords);$i++) { 
      $i++; 
      if (!isset($keywords[$i])) { 
       $keywords[$i] = null; 
      } 
      $arr[$keywords[$i]] = $keywords[$i]; 
     } 
     $obj =(object)$arr; 
     return json_encode($obj); 
    } 
} 

echo $_SERVER['REQUEST_METHOD'].'<br/>'; 
if ($_SERVER['REQUEST_METHOD'] === 'GET') { 
    $getReq = new GetRequest($_SERVER); 

    echo $getReq->getMethod().'<br/>'; 
    echo $getReq->getPath().'<br/>'; 
    echo $getReq->getURL().'<br/>'; 
    echo $getReq->getUserAgent().'<br/>'; 
    echo $getReq->getData().'<br/>'; 
} 

?> 

しかしhttp://localhost/HW1/Task3/61807_new.php?http://localhost/HW1/Task3/61807_new.php?a=1&b=2と出力:

がGET

ます。http://

{ "":ヌル}

予想される出力は次のとおりです。

GET

GET

/HW1/Task3/61807_new.php

http://localhost/HW1/Task3/61807_new.php?a=1&b=2

のMozilla/5.0(Windows NTの6.3。 WOW64)のAppleWebKit /ヤモリ様537.36(KHTML)クローム/ 56.0.2924.87サファリ/ 537.36

{ "A": "1"、 "B": "2"}

私はできませんどこに問題があるかを見てください! $ serverは初期化されていませんが、今はその理由がありません!

+2

あなたは__contruct' 'で「S」欠けている、それは' '__constructする必要があります – gmc

答えて

2

以下のコードを使用してください。あなたのコードにタイプミスがあった、それは__constructあると__contructない:)

<?php 

class Request{ 
protected $server; 

public function __construct($ser){ 
    $this->server = $ser; 
} 

public function getMethod(){ 
    return $this->server['REQUEST_METHOD']; 
} 

public function getPath(){ 
    return $this->server["PHP_SELF"]; 
} 

public function getURL(){ 
    return 'http://'.$this->server['HTTP_HOST'].$this->server['REQUEST_URI']; 
} 

public function getUserAgent(){ 
    return $this->server['HTTP_USER_AGENT']; 
} 
} 

class GetRequest extends Request{ 

function __construct($ser){ 
    parent::__construct($ser); 
} 

//Return query string params in JSON format 
function getData(){ 
    $keywords = preg_split("/[\s,=,&]+/", $this->server['QUERY_STRING']); 
    $arr=array(); 
    for($i=0;$i<sizeof($keywords);$i++) { 
     $i++; 
     if (!isset($keywords[$i])) { 
      $keywords[$i] = null; 
     } 
     $arr[$keywords[$i]] = $keywords[$i]; 
    } 
    $obj =(object)$arr; 
    return json_encode($obj); 
} 
} 

echo $_SERVER['REQUEST_METHOD'].'<br/>'; 
if ($_SERVER['REQUEST_METHOD'] === 'GET') { 
$getReq = new GetRequest($_SERVER); 

echo $getReq->getMethod().'<br/>'; 
echo $getReq->getPath().'<br/>'; 
echo $getReq->getURL().'<br/>'; 
echo $getReq->getUserAgent().'<br/>'; 
echo $getReq->getData().'<br/>'; 
} 

?> 
+0

おお、私は馬鹿です!ありがとうございました! –

関連する問題