0

TariffFareController というクラスがあり、次のようにデータベースから正しい料金を取得しています。

class TariffFareController {

public static function getTourFare($fieldTour) {

       $pdo = new SQL();
       $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

       try {

           $query =   "SELECT Fare FROM tbltours
                       WHERE TourName = '$fieldTour'";

           $stmt = $dbh->prepare($query);

           $stmt->execute();

           $result = $stmt->fetchColumn();

           $stmt->closeCursor();

           return $result;

           $dbh = null;

       }

       catch (PDOException $pe) {
           die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
       }

}

}

次に、プライベート get fare 関数で結果を確認できるようにしたいと思います。

private static function getFare($int_terminate) {

    // $tour_fare = (the result from getTourFare)

        if ($tour_fare != null) {

            // do something

        }

        else {

        // do something else

        }

    }

getTourFare から $result を取得し、これをプライベート getFare 関数で使用するにはどうすればよいですか?

どんな助けでも大歓迎です!

4

2 に答える 2

3

両方の関数が同じクラスにある場合は、単純に

$tour_fare = self::getTourFare();

それ以外の場合は、クラスの外から呼び出すことができます

$tour_fare = TariffFareController::getTourFare();

関数では、関数を実行する前getTourFare()に関数から戻っているため、行$dbh = null;が実行されないことに注意してください。また、変数が範囲外になるため、その行はまったく役に立たないと思うと言わざるを得ません。$dbh

于 2013-03-31T08:30:49.670 に答える
0

このようないくつかのことができます。

getFare を介して getTourFare を呼び出し、データが返された場合は、データを処理できます。代わりに、false を返します。何でもできます。

class TariffFareController {


private static function getFare() {
    if (self::getTourFare("any_field")) {
        /* Data success */
    } else {
        /* No data */
    }
}
public static function getTourFare($fieldTour) {

   $pdo = new SQL();
   $dbh = $pdo->connect(Database::$serverIP, Database::$serverPort, Database::$dbName, Database::$user, Database::$pass);

   try {

       $query =   "SELECT Fare FROM tbltours
                   WHERE TourName = '$fieldTour'";

       $stmt = $dbh->prepare($query);

       if (!$stmt->execute()) return false;

       if ($stmt->rowCount() > 0) {
           $result = $stmt->fetchColumn();

           $stmt->closeCursor();

           return $result;
       } else {
           return false;
       }

       $dbh = null;

   }

   catch (PDOException $pe) {
       die("Error: " .$pe->getMessage(). " Query: ".$stmt->queryString);
   }

}

}
于 2013-03-31T08:32:16.287 に答える