0

私は次の機能を持っています:

class TariffFareController {

public static function checkRunin($fieldPickup) {

    $runInThreshold = 5;
    $fieldDestination = 6;

    if ($fieldPickup > $runInThreshold && $fieldDestination > $runInThreshold)

    {

        if ($fieldPickup > $fieldDestination)

        {

            $distance = $fieldPickup - $runInThreshold;

        } else {

            $distance = $fieldDestination - $runInThreshold;

        }


       }
}

この関数に渡したい$distance:-

private static function getFare($int_terminate) {

    //CODE
    //eg// if($distance > 5) {

        //do something

    }

}

これどうやってするの?

4

7 に答える 7

5

return最初の関数の値:

public static function checkRunin($fieldPickup) {
    $runInThreshold = 5;
    $fieldDestination = 6;

    if ($fieldPickup > $runInThreshold && $fieldDestination > $runInThreshold)
    {
        if ($fieldPickup > $fieldDestination)
        {
            $distance = $fieldPickup - $runInThreshold;
        } else {
            $distance = $fieldDestination - $runInThreshold;
        }
    }
    return $distance;
}

// Get $distance from checkRunin()
$distance = $obj->checkRunin($fieldPickup);
// Pass $distance as a parameter
$obj->getFare($distance);
于 2013-03-15T14:01:59.583 に答える
2

あなたがそれが機能しないと言うとき...それは基本的$diffrentに適切に宣言されていないため、scope問題が発生しています

私の仮定

  • checkRuninとはgetFare同じクラスのメソッドですTariffFareController
  • $int_terminateとは異なります$distance

あなたのクラスから

  • $distanceとして宣言されていませんstatic
  • getFare$distance宣言されていないアクセスを試みています

シンプルなソリューション

class TariffFareController {
    private static $distance = 0;

    public static function checkRunin($fieldPickup) {
        $runInThreshold = 5;
        $fieldDestination = 6;
        if ($fieldPickup > $runInThreshold && $fieldDestination > $runInThreshold) {
            if ($fieldPickup > $fieldDestination) {
                self::$distance = $fieldPickup - $runInThreshold;
            } else {
                self::$distance = $fieldDestination - $runInThreshold;
            }
        }
        printf("self:\$distance = %d ; // Called %s :\n", self::$distance, __METHOD__);
    }

    public static function getFare($int_terminate) {
        printf("self:\$distance = %d ; // Called %s :\n", self::$distance, __METHOD__);
    }
}

TariffFareController::checkRunin(10);
TariffFareController::getFare(2);

出力

self:$distance = 5 ; // Called TariffFareController::checkRunin :
self:$distance = 5 ; // Called TariffFareController::getFare :
于 2013-03-18T16:06:29.333 に答える
1
class TariffFareController {

public static $distance = 0;
public static function checkRunin($fieldPickup) {

$runInThreshold = 5;
$fieldDestination = 6;

if ($fieldPickup > $runInThreshold && $fieldDestination > $runInThreshold)

{

    if ($fieldPickup > $fieldDestination)

    {

        self::$distance = $fieldPickup - $runInThreshold;

    } else {

        self::$distance = $fieldDestination - $runInThreshold;

    }


   }
}

それから

private static function getFare($int_terminate) {

//CODE
//eg// if(self::$distance > 5) {

    //do something

}

}
于 2013-03-18T10:06:29.593 に答える
0

上記の答えがうまくいかなかった理由がわかりません。しかし、このアイデア
クラスsomeThing {protected$distance;を試してください。保護された関数initDistance(){$ this-> distance = 5; }保護された関数useDistance(){if($ this-> distance <5){//何でもする}} $ obj = new someThing(); $ obj-> initDistance(); $ obj-> useDistance();

于 2013-03-22T05:25:19.817 に答える
-1

次のようにセッションを使用することはできません:-

session_start();

public static function checkRunin($fieldPickup) {

    $runInThreshold = 5;
    $fieldDestination = 6;
    $_SESSION['runin_distance'] = 0;

    if ($fieldPickup > $runInThreshold && $fieldDestination > $runInThreshold) {

        if ($fieldPickup > $fieldDestination) {

            $_SESSION['runin_distance'] = $fieldPickup - $runInThreshold;


        } else {

            $_SESSION['runin_distance'] = $fieldDestination - $runInThreshold;

        }

    }

}

その後...

private static function getFare($int_terminate) {

    if($_SESSION['runin_distance'] > 5) {

    //do something

    }

}
于 2013-03-18T14:49:10.787 に答える
-3

距離をグローバル変数として作成し、checkRunIn で設定し、必要なときに getFare でアクセスします

于 2013-03-15T14:03:02.420 に答える