Intereting Posts

Передача переменной между функциями PHP

У меня есть следующая функция:

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

Как я могу это сделать?

Solutions Collecting From Web of "Передача переменной между функциями PHP"

Когда вы говорите, что это не работает … это в основном потому, что $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 : 

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); 
 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 } } 

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

это ответ от @John Conde
просто не забудьте использовать статическую область использования ::

Я не знаю, почему ответ выше не работал для вас. Но попробуйте эту идею
class someThing {protected $ distance; защищенная функция initDistance () {$ this-> distance = 5; } protected function useDistance () {if ($ this-> distance <5) {// сделать что-нибудь}} $ obj = new someThing (); $ Obj-> initDistance (); $ Obj-> useDistance ();

Невозможно ли использовать сеансы следующим образом:

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

создать расстояние как глобальную переменную, установить его, когда в checkRunIn, затем получить доступ к нему, когда вам это нужно в getFare