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

test.php?method=add のブラウザから URL を送ると

出力やエラー メッセージが表示されません。私は何が欠けていますか?

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

コンストラクターをこれに変更します...

 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 に答える
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 に答える