1

我有这样的课:

<?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

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

4

3 回答 3

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;
于 2013-06-22T20:19:16.490 回答
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()

于 2013-06-22T20:28:25.457 回答
0

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

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

您不必将 $_GET 传递到构造中,因为它是超级全局的,并且随时随地都可用

于 2013-06-22T20:19:07.300 回答