PHP类构造函数,在$ _GET参数传递时不清楚

时间:2013-06-22 20:12:56

标签: php class constructor

我有一个这样的课程:

<?php

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

class api {

    function __construct($_GET) {
        if ($_GET['method'] == "add") {
            $this->add();
        }
        else if ($_GET['method'] == "subtract") {
            $this->subtract();
        }
    }

    function add() {
        return "Adding!";
    }

    function subtract() {
        return "Subtracting!";
    }

}

$api = new api($_GET);
echo $api;
?>

当我从浏览器发送一个URL:test.php?method = add

我没有收到任何输出或错误消息。我缺少什么?

3 个答案:

答案 0 :(得分:1)

你的构造函数没有返回任何东西,只返回你的其他函数。试试这个。

Class api {

    function __construct($_GET) {

        if ($_GET['method'] == "add") {
            $this->message =  $this->add();
        }
        else if ($_GET['method'] == "subtract") {
            $this->message =  $this->subtract();
        }
    }

    function add() {
        return "Adding!";
    }

    function subtract() {
        return "Subtracting!";
    }

}

$api = new api($_GET);
echo $api->message;

答案 1 :(得分:0)

将您的构造函数更改为此...

 function __construct() {
    if(isset($_GET)){
    if($_GET['method']== "add") {
        $this->add();
    }
    else if($_GET['method'] == "subtract"){
        $this->subtract();
    }}
}

你不必将$ _GET传递给构造,因为它是一个超级全局的,并且随处可用

答案 2 :(得分:0)

试试这个

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

class api {

    function __construct() {
        if ($_GET['method'] == "add") {
            return $this->add();
        }
        else if ($_GET['method'] == "subtract") {
            return $this->subtract();
        }
    }

    function add() {
        return "Adding!";
    }

    function subtract() {
        return "Subtracting!";
    }

}

$api = new api();
echo $api->__construct();
?>

__construct()是类方法,因此为了从此方法获取返回值,您必须以这种方式使用它$api->__construct()